Как генерировать случайные 32-битные целые числа в C ++

0

Я понимаю, что RAND_MAX зависит от архитектуры машины. Если машина 32 бит, то rand() будет генерировать только что-то до 4 байт. Как создать 32-битное случайное целое число на 64-битной машине с помощью rand()?

Кроме того, мне всегда нужен srand(), если я хочу генерировать миллиарды случайных целых чисел с rand() позже?

  • 4
    просто брось его ... (uint32)rand()
  • 6
    В c ++ 11 есть целый заголовок <random>, полный вкусностей: en.cppreference.com/w/cpp/header/random
Показать ещё 7 комментариев
Теги:
random

2 ответа

0
Лучший ответ

Поскольку вы используете rand() уже, вам, вероятно, не нужно беспокоиться о периоде, поэтому вы можете просто скрыть верхние биты.

В общем, вы должны сделать что-то вроде srand(time(NULL)) один раз в верхней части вашей программы. В противном случае вы будете генерировать одну и ту же последовательность из миллиардов случайных чисел каждый раз, когда вы запускаете программу.

1

Использование rand() с бит-взломом серьезно обескуражено, так как во многих случаях это может привести к проблемам случайности.

Заголовок С++ 11 <random> определяет все инструменты, необходимые для создания произвольных случайных чисел хорошего качества, включая целое число любой длины, с плавающей запятой и т.д.

Я предлагаю посмотреть это: https://channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful

Ещё вопросы

Сообщество Overcoder
Наверх
Меню