我跑了一个叫rand()四次的程序.我使用模数运算符将范围限制为1-6.产生的整数分别为2,5,4和2.我重新编程并获得相同的数字.然后我创建了一个全新的程序,也调用了rand()四次,我仍然得到整数序列2,5,4,2.然后我关闭计算机,重新启动,创建另一个新程序,调用rand()四次,仍然得到序列2,5,4,2.
我理解你需要"种子"RNG所需的基础知识srand(),它在不同的点开始序列,但我只是好奇:忘记播种片刻,是由rand()安装,编译器和/或操作系统生成的序列依赖?例如,以下任何一个会导致不同的顺序:
或者只是使用相同RNG算法的所有C编译器的问题,因此伪随机序列(从头开始)对每个人都是相同的?
如果你不打电话srand,C说:
C99,7.20.2.2p2)"如果在对srand进行任何调用之前调用了rand,则应该生成与第一次调用srand时种子值为1相同的序列."
因此,如果您的rand函数(在C标准中未指定并允许实现)是一个算法PRNG,如果您不调用,很可能会一次又一次地获得相同的序列srand.
| 归档时间: |
|
| 查看次数: |
438 次 |
| 最近记录: |