首先,各位不妨在新启动的MATLAB中使用randperm
生成随机整数,看看结果是否和笔者一致?
randperm
是一个返回随机整数的函数,例如 randperm(10)
以随机顺序返回从 1 到 10 的所有整数。
>> randperm(10)
ans =
6 3 7 8 5 1 2 4 9 10
尝试过的朋友们可能会发现在新启动的MATLAB中,上述命令生成的随机数是相同的,而且与MATLAB版本、操作系统等因素无关。
同样的,使用rand
、randi
、randn
等函数同样会在新启动的MATLAB会话中每次生成相同的随机数。
>> rand
ans =
0.8147
或是
>> randn
ans =
0.5377
随机数相同的原因
事实上,MATLAB中的随机数并非纯粹意义上的随机数,而是完全确定的。
不止MATLAB,其实现代编程语言和模拟平台中使用的所有“随机数”生成器(pseudorandom number generator)都是完全确定性的,是通过一定的算法使用程序生成的伪随机数, 而通过物理现象产生的随机数才是真随机数。
真伪随机数之间的最大差别在于是否可以预测。
在MATLAB中,所有随机数函数(rand
、randn
、randi
和