以Matlab语法中的rand(‘state’, sum(clock))为例,在其它编程语言里也是类似的
计算机系统中的随机数都是伪随机数,是通过一个算法连续产生的,知道上一个随机数,下一个随机数就是确定的,已知从给定的某个数开始,后面连续的随机数序列都已经确定
我们使用的随机数就好像从这个序列中(称为随机数流)中取数字来使用
为了增加随机数的随机程度和可控性,用rand(‘state’, X)来设置随机数流的状态,就像C语言中随机数的seed,一旦给一个X值,那么后面的随机数流就确定
Matlab语法中的rand(‘state’, sum(clock))用当前时间数码sum(clock)作为随机数的状态,clock的返回值是具有6个元素的向量,用于分辨年月日时分秒,sum加起来就作为随机数的状态,因为你每次运行程序的时间不同,所以得到的随机数序列就不同
单独使用这句代码会改变随机数流的状态,但是未使用前不产生任何变量
如果计算机运行速度太快的话,仍然会生成相同随机数,可以考虑使用rand(‘state’, sum(clock)*rand(1))