Scratch
-
- Сообщения: 1
- Зарегистрирован: 05 дек 2015, 12:34
Как сделать чтобы при выдачи случайного числа оно не повторялось
А как Вы заставили его повторяться? Так: что ли?
Код: Выделить всё
int x=rand();
std::cout<<x<<std::endl;
std::cout<<x<<std::endl;
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
При использовании генераторов случайных чисел обычно задается также случайно его начальное состояние, что практически предотвращает повторение чисел при генерации. В том числе советую попробовать различные генераторы.
А при чём здесь начальное состояние? Начальное состояние детерменировано, но числа совпадать не могут.
Код: Выделить всё
srand(0);
std::cout<<rand()<<std::endl;
std::cout<<rand()<<std::endl;
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Сионист: честно говоря вопрос Кубик мишики не привязан к ситуации, поэтому я предположил, что он несколько раз запускает свою программу и результаты каждого запуска повторяются.
А ну тогда начальное состояние на основе любой величины, которая будет меняться от запуска к запуску. Хоть на основе текущего системного времени. Можно ещё посолить это время. Но ни как не , так как в этом случае параметр srad тоже повторится. Идеальный вариант - аппаратный генератор истинно случайных чисел. Но это на обычной офисной/домашней машине это не достижимо.
Код: Выделить всё
srand(rand);
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Ну, истинно случайные никому не нужны. А аппаратный генератор уже создан by Intel. Инструкции RDRAND, RDSEED новых процессоров IntelИдеальный вариант - аппаратный генератор истинно случайных чисел. Но это на обычной офисной/домашней машине это не достижимо.
It's a long way to the top if you wanna rock'n'roll
Ну это как раз те же псевдослучайные с переменным стартом, причём, от не квантового аппаратного генератора случайных чисел. Сам же интелл признаёт, что именно их аппаратный генератор случайных кривой и на большее, чем старт другого генератора, не годится. Но в связке получается один из хороших вариантов. Возможно даже лучше, чем старт rand от времени запуска программы. По крайней мере ителл обещает меньшую предсказуемость.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.