由rand()函数导致的error

error描述

在完成一个需要生成多个随机过程的项目的时候,发现每一次的输出均为固定值。

原因

随机过程的生成是通过生成随机数实现的,而生成随机数又是通过使用rand()函数实现的。然而rand()函数产生的随机数是由种子决定的。在编写程序的过程中,我用系统时间来初始化该种子,然而由于程序运行时间非常短,故而在循环调用rand()函数时,种子并不会产生变化,其结果就是生成的随机数是重复的,进而导致生成的随机过程也是重复的。

影响

由于随机过程的重复,导致最后的结果与预期结果相差甚远。

发现过程

在发现最终结果与预期结果相差甚远后,我将生成的随机过程打印了出来,发现其是重复出现的而不是完全随机的。于是进而测试了rand()函数,发现其生成的是基于时间的伪随机数,便更改了生成随机数的方法,进而成功解决这个问题。

posted @ 2018-03-11 22:04  マヨネーズ  阅读(258)  评论(0编辑  收藏  举报