Ejemplo n.º 1
0
	void mutate() {
		assert(cfg);
		size_t action = 0;  // default = modify
		if (cfg->mutateSize) {
			action =
			    chooseAction(std::vector<T>{{cfg->modifyProba, cfg->addProba, cfg->eraseProba}},
			                 getRandomEngine());
		}
		std::uniform_real_distribution<T> d(0, 1);  // TODO replace by generic rand
		std::uniform_int_distribution<int> dInt(0, values.size() - 1);
		switch (action) {
			case 0:
				// modify
				values[dInt(getRandomEngine())] = d(getRandomEngine());
				break;
			case 1:
				// add
				values.push_back(d(getRandomEngine()));
				break;

			case 2:
			default:
				// erase
				values.erase(values.begin() + dInt(getRandomEngine()));
				break;
		}
	}
Ejemplo n.º 2
0
	static VectorDNA random(Config* c) {
		assert(c);
		VectorDNA res(c);
		res.values.resize(c->initialSize);
		std::uniform_real_distribution<T> d(0, 1);  // TODO replace by generic rand
		for (size_t i = 0; i < c->initialSize; ++i) res.values[i] = d(getRandomEngine());
		return res;
	}
Ejemplo n.º 3
0
inline IntT getRandomInteger(IntT Min = 0,
                             IntT Max = std::numeric_limits<IntT>::max()) {
    std::uniform_int_distribution<IntT> dist(Min, Max);
    return dist(getRandomEngine());
}
Ejemplo n.º 4
0
inline char getRandomChar() {
    std::uniform_int_distribution<> LettersDist(0, LettersSize-1);
    return Letters[LettersDist(getRandomEngine())];
}
Ejemplo n.º 5
0
RandomRealGenerator<RealType>::RandomRealGenerator(
        RealType min, RealType max)
    : m_Engine(getRandomEngine()),
      m_Dist(min, std::nextafter(max, std::numeric_limits<RealType>::max()))
{}
Ejemplo n.º 6
0
RandomIntGenerator<IntType>::RandomIntGenerator(
        std::default_random_engine& randomEngine,
        IntType min, IntType max)
    : m_Engine(getRandomEngine()),
      m_Dist(min, max)
{}
Ejemplo n.º 7
0
RandomIntGenerator<IntType>::RandomIntGenerator(
        IntType min, IntType max)
    : m_Engine(getRandomEngine()),
      m_Dist(min, max)
{}
Ejemplo n.º 8
0
inline IntT getRandomInteger() {
    std::uniform_int_distribution<IntT> dist;
    return dist(getRandomEngine());
}
Ejemplo n.º 9
0
double Utils::getRandNumber(double min, double max) {
	std::mt19937 mt = getRandomEngine();
	std::uniform_real_distribution<double> dist(min, max);
	return dist(mt);
}
Ejemplo n.º 10
0
float Utils::getRandNumber(float min, float max) {
	std::mt19937 mt = getRandomEngine();
	std::uniform_real_distribution<float> dist(min, max);
	return dist(mt);
}