作业帮 > 综合 > 作业

C语言用rand产生的是伪随机数么

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/05/03 22:49:09
C语言用rand产生的是伪随机数么
C语言用rand产生的是伪随机数么
是的.rand生成的数,只要种子是确定的,生成的随机数就是确定的.同一个种子生成的随机数之间是有关系的,并不是独立的.
再问: 种子选为time(NULL)也是伪随机么?
再答: 给一个种子,可以生成一系列的随机数。但是这些随机数之间是有关系的。 如果每个种子,只生成一个随机数(就是选一个种子,生成一个随机数,再选别的种子,再生成一个随机数——也就是每个种子只用一次),那这个随机数就更“随机”,但是,这个“随机”数的根本原因,不是rand函数,而是种子本身在某种程度上是随机的! 更换种子可以提高随机性,但是仍然是伪随机的。 比如某个循环语句里面,重复执行随机数生成函数,那么执行相邻两次操作的时间有可能是个固定的常数,对吧?那么,假如第一次用time(NULL)生成的种子被人知道后,之后用time(NULL)生成的种子也不是随机的,因为可以人为地推算出来下次的种子是什么,对吧? 如果连种子都能被推算出来,那就谈不上随机数了。 软件是实现不了真随机的,只能用硬件来实现,通过温度、湿度、压强、电压等等物理量影响硬件电路来获得随机的效果。