После моего предыдущего вопроса «На каком алгоритме основан Rand() в Язык C?"", причина, по которой я хочу знать алгоритм функции, заключается в том, что я хочу сравнить разницу в скорости между ним и RdRand.
Я пытался зациклить его 100 миллионов раз и рассчитать время его работы.
Обычно использование аппаратных средств для создания случайных чисел (RdRand) значительно увеличивает его скорость, но результат показывает обратное (Rand() 3 с против RdRand 10 с).
Может ли кто-нибудь помочь мне понять это?
Бесконечно благодарен!
rand()
— это очень плохой линейный конгруэнтный генератор, в котором младшие биты особенно далеки от случайных. Но это очень быстро: просто умножение целых чисел, сложение и маскирование битов. Обычно достаточно для игр. В противном случае не используйте его. Некоторый контекст есть на man7.org/linux/man-pages/man3. /rand.3.html. Любой rng криптографического качества, вероятно, немного медленнее, чем rand, просто потому, что он выполняет гораздо больше работы по скремблированию битов. - person Gene   schedule 13.05.2015