最近在服务器端使用matlab时,发现每次运行生成的随机数序列都一样,这让人十分吃惊。跟其他编程语言类似,matlab产生的随机数是伪随机数,实际上是根据一个随机数序列生成的,不具有真实的随机性,但可以模拟随机数生成过程,因此从原理上来讲,每次运行生成的随机数序列不应该完全相同。那么我遇到的问题是怎么回事呢?

 

我尝试在自己的PC上生成随机数,每次调用得到的结果又都不相同,这是合理的,也符合预期。经过一系列思考,终于发现了问题所在。我在服务器端是采用后台运行的方式,每次跑程序其实都是新启动matlab。matlab中随机数生成的种子是在启动matlab时确定的,因此出现了我遇到的问题。

 

利用rng函数可解决这一问题。可在matlab中输入help rng查看完整帮助文档。

以下命令

rng('shuffle')

可基于当前系统时间设置初始种子。

更多推荐

Matlab随机数生成器中的小技巧