Я создал этот метод для генерации случайных чисел в C++, когда я вызываю его в цикле, я всегда получаю одно и то же случайное значение, что не так? Потому что я ожидаю различное значение после каждой итерации цикла. Я компилирую его с флагом -std = C++ 11.C++ случайное число не меняется
float CDevice::gaussNoise(float mean, float stddev)
{
std::default_random_engine generator(time(NULL));
std::normal_distribution<float> distribution(mean, stddev);
return distribution(generator);
}
основные выглядит следующим образом:
int main
{
class CDevice *device;
device = new CDevice();
std::vector<float> vec;
for(uint32_t i = 0; i< 10; ++i)
vec.push_back(device->gaussNoise(1,5));
for(uint32_t i = 0; i < vec.size(); ++i)
std::cout << vec[i] << std::endl;
}
и выход есть (например):
3.71254
3.71254
3.71254
3.71254
3.71254
3.71254
3.71254
3.71254
3.71254
3.71254
Видите это так много раз здесь ... инициализируйте свое случайное число, генерируя * вне * вашего цикла! Обычно * один раз * в начале вашего приложения. – crashmstr
Тема -> «Reffer» о случайном числе http://stackoverflow.com/questions/5008804/generating-random-integer-from-a-range –
Вы продолжаете спрашивать новый, одинаково настроенное ГСЧ, для его первый выход, когда вы хотите продолжать задавать тот же RNG для своих последовательных выходов. –