PDA

Просмотр полной версии : Scratch



Кубик мишика
05.12.2015, 12:57
Как сделать чтобы при выдачи случайного числа оно не повторялось

Сионист
05.12.2015, 16:10
А как Вы заставили его повторяться? Так:
int x=rand();
std::cout<<x<<std::endl;
std::cout<<x<<std::endl; что ли?

Din666
08.12.2015, 10:21
При использовании генераторов случайных чисел обычно задается также случайно его начальное состояние, что практически предотвращает повторение чисел при генерации. В том числе советую попробовать различные генераторы.

Сионист
09.12.2015, 07:43
А при чём здесь начальное состояние?
srand(0);
std::cout<<rand()<<std::endl;
std::cout<<rand()<<std::endl; Начальное состояние детерменировано, но числа совпадать не могут.

Din666
09.12.2015, 10:06
Сионист: честно говоря вопрос Кубик мишики не привязан к ситуации, поэтому я предположил, что он несколько раз запускает свою программу и результаты каждого запуска повторяются.

Сионист
09.12.2015, 13:23
А ну тогда начальное состояние на основе любой величины, которая будет меняться от запуска к запуску. Хоть на основе текущего системного времени. Можно ещё посолить это время. Но ни как не
srand(rand);, так как в этом случае параметр srad тоже повторится. Идеальный вариант - аппаратный генератор истинно случайных чисел. Но это на обычной офисной/домашней машине это не достижимо.

somewhere
11.12.2015, 15:52
Идеальный вариант - аппаратный генератор истинно случайных чисел. Но это на обычной офисной/домашней машине это не достижимо.
Ну, истинно случайные никому не нужны. А аппаратный генератор уже создан by Intel. Инструкции RDRAND, RDSEED новых процессоров Intel

Сионист
12.12.2015, 16:50
Ну это как раз те же псевдослучайные с переменным стартом, причём, от не квантового аппаратного генератора случайных чисел. Сам же интелл признаёт, что именно их аппаратный генератор случайных кривой и на большее, чем старт другого генератора, не годится. Но в связке получается один из хороших вариантов. Возможно даже лучше, чем старт rand от времени запуска программы. По крайней мере ителл обещает меньшую предсказуемость.