Scratch

Алгоритмы: от сортировки пузырьком до численных методов

Модераторы: C_O_D_E, DeeJayC

Ответить
Кубик мишика
Сообщения: 1
Зарегистрирован: 05 дек 2015, 12:34

05 дек 2015, 12:57

Как сделать чтобы при выдачи случайного числа оно не повторялось
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

05 дек 2015, 16:10

А как Вы заставили его повторяться? Так:

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

int x=rand();
std::cout<<x<<std::endl;
std::cout<<x<<std::endl;
что ли?
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Din666
Сообщения: 51
Зарегистрирован: 17 июл 2015, 13:25
Откуда: Moscow
Контактная информация:

08 дек 2015, 10:21

При использовании генераторов случайных чисел обычно задается также случайно его начальное состояние, что практически предотвращает повторение чисел при генерации. В том числе советую попробовать различные генераторы.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

09 дек 2015, 07:43

А при чём здесь начальное состояние?

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

srand(0);
std::cout<<rand()<<std::endl;
std::cout<<rand()<<std::endl;
Начальное состояние детерменировано, но числа совпадать не могут.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Din666
Сообщения: 51
Зарегистрирован: 17 июл 2015, 13:25
Откуда: Moscow
Контактная информация:

09 дек 2015, 10:06

Сионист: честно говоря вопрос Кубик мишики не привязан к ситуации, поэтому я предположил, что он несколько раз запускает свою программу и результаты каждого запуска повторяются.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

09 дек 2015, 13:23

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

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

srand(rand);
, так как в этом случае параметр srad тоже повторится. Идеальный вариант - аппаратный генератор истинно случайных чисел. Но это на обычной офисной/домашней машине это не достижимо.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
somewhere
Сообщения: 1837
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

11 дек 2015, 15:52

Идеальный вариант - аппаратный генератор истинно случайных чисел. Но это на обычной офисной/домашней машине это не достижимо.
Ну, истинно случайные никому не нужны. А аппаратный генератор уже создан by Intel. Инструкции RDRAND, RDSEED новых процессоров Intel
It's a long way to the top if you wanna rock'n'roll
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

12 дек 2015, 16:50

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