正确的方法来生成随机数

时间:2014-10-20 08:33:06

标签: matlab random

在"第8讲第3页,白噪声和功率谱密度"提到randrandn创建伪随机数。如果我错了,请纠正我:随机数序列是对于同一种子,两个序列永远不会真正准确的。

然而,伪随机数是确定性的,即,如果从相同的种子生成,则两个序列是相同的。

我怎么能创建随机数而不是伪随机数,因为我认为Matlab的randrandn函数用于生成相同的独立随机数?但是,幻灯片提到他们创建伪随机数。谷歌搜索创建随机数返回randrandn()函数。

将随机数与伪随机数区分开的原因是我需要将密码学(A)随机性与白噪声特性的性能和(B)具有白噪声特性的伪随机信号进行比较。因此,(A)必须与(B)不同。我将不胜感激任何代码和生成随机数和伪随机数的正确方法。

2 个答案:

答案 0 :(得分:3)

生成“真实”随机数是一项棘手的练习,您可以查看RNG上的维基百科和随机性测试(http://en.wikipedia.org/wiki/Random_number_generation)。此链接提供基于大气噪声(http://www.random.org/)的RNG。

答案 1 :(得分:1)

如上所述,使用计算机软件创建真正的随机数非常困难(可能是不可能的)。互联网上有许多项目提供由物理过程生成的真实随机数(例如Kostya提到的那个)。一个特别有趣的是来自HU Berlin的this

话虽如此,对于像你想要表演的那样的实验,马耳他的psedo RNG还不错。 Matlab的算法包括Mersenne Twister,它是最着名的伪RNG之一(我建议你谷歌Mersenne Twister&#39的属性)。请参阅Maltab rng文档here

由于您没有提到要模拟的系统类型,解决问题的一种简单方法是使用良好的RNG(Mersenne Twister)进行流程A,对流程B使用不太好的<。 / p>