matlab中如何产生非伪随机数,即真正的随机数怎么生成,求高手指点

供稿:hz-xin.com     日期:2025-01-15
matlab如何产生真正的随机数?

真正的随机数,我有看过一些内容,可以用鼠标或键盘按键的时间,或者网络访问的时间(是指服务器),或者硬盘读取的时间等。
这些估计都相当底层。估计不太容易得到。

由计算机产生的随机数都是伪随机的,不可能产生真正的随机数,你说的问题可能是两次rand取到的随机数是相同的吧? 如果是这样的话,有一种方法就是人为设定rand函数的种子,详见:
http://wenku.baidu.com/view/6500290d4a7302768e9939f2.html

真正的随机数只能通过硬件实现,通过软件实现的都是伪随机数。

真正的随机数是得通过现实世界中随机发生的物理事件来产生的,如放射性物质随机数发生器是通过某种放射性物质放射出的粒子数来获得随机数,还有通过电路产生高频噪声来获得随机数等。不能每台PC都买一个硬件随机数发生器。在这种原因下,就出现了使用软件方法来产生随机数的算法。通过软件方法产生的随机数都成为伪随机数,因为它们都不是真正的随机数。

所谓伪随机数,就是找到一组数目巨大的数,这组数的出现符合一定的概率分布,并且这组数能通过相应的随机性测试,这样我们就能使用这组数来凑合“顶替”真正的随机数来应用了。matlab默认使用的随机数生成算法Mersenne twister是目前较好的一种伪随机数产生算法,可以满足很多场合的应用,如蒙特卡罗模拟等。

总之,matlab中是不可能产生非伪随机数,即真正的随机数的