我想知道rand()在linux的gcc编译器中生成随机数的确切方法。

时间:2012-12-20 18:37:37

标签: gcc random

我想知道用于在linux的gcc编译器中生成随机数的确切方法。

我知道线性同余生成器用于生成gcc中的随机数,其具有通式:

X(n + 1)=(a * X(n)+ c)mod m

我开始知道使用的通用公式具有维基百科中给出的这些常数值: http://en.wikipedia.org/wiki/Linear_congruential_generator

,其中m = 2 ^ 3,a = 1103515245和12345

但是通过放置这些常量获得的结果与gcc中rand()函数获得的结果不匹配。

有人可以在我错的地方帮助我,或者有些我不知道的事情。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

看起来像是对DES :: SetKey的调用(unsigned long long int);在stdlib.h中不知道这是否与随机生成器功能有关,但你永远不知道,因为有一个更快版本的DES加密/解密算法,这个算法曾经用过旧的实际上使用DES作为加密/解密系统的GNUPG版本,因此这可能是他们用来生成随机数的原因。