Страница 1 из 1

Scratch

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

Re: Scratch

Добавлено: 05 дек 2015, 16:10
Сионист
А как Вы заставили его повторяться? Так:

Код: Выделить всё

int x=rand();
std::cout<<x<<std::endl;
std::cout<<x<<std::endl;
что ли?

Re: Scratch

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

Re: Scratch

Добавлено: 09 дек 2015, 07:43
Сионист
А при чём здесь начальное состояние?

Код: Выделить всё

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

Re: Scratch

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

Re: Scratch

Добавлено: 09 дек 2015, 13:23
Сионист
А ну тогда начальное состояние на основе любой величины, которая будет меняться от запуска к запуску. Хоть на основе текущего системного времени. Можно ещё посолить это время. Но ни как не

Код: Выделить всё

srand(rand);
, так как в этом случае параметр srad тоже повторится. Идеальный вариант - аппаратный генератор истинно случайных чисел. Но это на обычной офисной/домашней машине это не достижимо.

Re: Scratch

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

Re: Scratch

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