Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > rand() работает до 32тыс, а как сделать больше?


Автор: victor79 8.1.2015, 00:55
мне нужен rand до нескольких миллионов, может десятков. Как стандартными средствами такое получать?

Автор: Cheloveck 8.1.2015, 01:39
Умножить rand на rand?

Автор: victor79 8.1.2015, 14:57
а распределение без изьянов будет?

Автор: sQu1rr 8.1.2015, 15:16
Цитата(victor79 @  8.1.2015,  11:57 Найти цитируемый пост)
а распределение без изьянов будет? 

Будет, посмотрите здесь
http://stackoverflow.com/questions/9775313/extend-rand-max-range

Автор: tzirechnoy 9.1.2015, 20:40
Цитата
а распределение без изьянов будет?


Нет. Из очевидного: не будет простых чисел большэ RAND_MAX. Неочевидного, думаю, тожэ хватит.

Учитывая, что скорее всего там, где RAND_MAX 32768 -- там и сам rand тожэ херня из стандарта POSIX -- то лучшэ всего найти алгоритм нормального pseudo-random number генератора и воплотить его самому. Оно строк 15 обычно всего лишь.

Автор: disputant 10.1.2015, 10:22
Ну, варианты - взять книжку Кнута и переписать оттуда, там прямо на C код есть smile

Второй вариант - воспользоваться реализацией, которая поддерживает C++11 и воспользоваться STL.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)