有没有一种简单的方法来扩展这个rand()函数(来自K&R的《C程序设计语言》),使其能够产生64位随机数而不是15位?
int rand()
{
rand_next = rand_next * 1103515245 + 12345;
return (unsigned int)(rand_next/ 65536) % 32768;
}
编辑:我的意思是将其更改为使用64位数字和不同的魔术数字。而不是将其放入for循环中。
编辑#2:此算法实际上是15位随机性,而不是30位。我的原始帖子中有愚蠢的数学错误。
rand
并将结果连接起来。这样做只会减少熵(除非连接使用了其他熵源,其熵比较高,在这种情况下,您应该只使用那个熵源本身)。 - Thomas Eding