2016-11-09 2 views
1

Я использовал default_random_engine для создания списка разных чисел, но они оказались одинаковыми. Мне интересно создавать разные цифры? Я знаю, что srand() делает. Но могу ли я использовать этот механизм по умолчанию?Как использовать uniform_real_distribution для генерации разных чисел?

default_random_engine engine{ static_cast<unsigned int>(time(0)) }; 
uniform_real_distribution<double>randomNumber{ 50,100 }; 
for(int i=0; i<10;i++){ 
    a[i]= randomNumber(engine); 
    } 
+0

Когда вы говорите, что они все одинаковые, вы имеете в виду, что все числа одинаковы за один проход или каждый раз, когда вы получаете одинаковый набор чисел? –

+1

Не засевайте 'time (0)', семя с 'operator()' от одного экземпляра 'std :: random_device', в любом случае, идеально семени только один раз для всего процесса. – WhozCraig

+0

@PaulRooney Каждый раз, когда я создаю другой массив случайных чисел. В этом массиве встречаются одинаковые числа (элементы). Интересно, как я могу сделать каждый элемент в этом массиве уникальным? –

ответ

2

Такое поведение является конструкцией для генераторов случайных чисел. Вам нужно установить «семя» для случайного генератора при запуске вашей программы.

Если у вас есть расширения C++ @WhozGraig рекомендует, чтобы они были лучшими. Это очень неряшливо, но многие люди используют функцию time() для получения разного количества при каждом запуске программы.

Смежные вопросы