生成0到1之间的100个随机数并冻结它

时间:2015-09-27 19:04:25

标签: matlab random generator

如何在0和1之间生成100个随机数并冻结,以便无法更改?我想用MATLAB。我使用Excel生成,但它不断变化,所以我厌倦了那些不断的变化。我有10个变量,每个变量必须生成0到1之间的100个随机数。我还需要将这些生成的数字导出到Excel。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

第1部分:生成可重复的randoms

我认为通过冻结你的意思是在程序的不同运行中随机数生成器生成相同的序列随机数'号。

在MATLAB中使用命令rng来处理这个问题。

此函数采用的唯一参数是种子的值。在您的情况下,您可以使用default值,以便每次运行代码时将算法参数设置为默认值。因此,它会一遍又一遍地生成相同的数字序列。

rng('默认')将rand,randi和randn使用的随机数生成器的设置置于其默认值。这样,就会产生相同的随机数,就像重新启动MATLAB一样。默认设置是带有种子0的Mersenne Twister。

示例:

>> rng('default');
>> A = rand(1,10)

A =

    0.8147    0.9058    0.1270    0.9134    0.6324    0.0975    0.2785    0.5469    0.9575    0.9649

>> B = rand(1,10)

B =

    0.1576    0.9706    0.9572    0.4854    0.8003    0.1419    0.4218    0.9157    0.7922    0.9595

>> rng('default');
>> B = rand(1,10)

B =

    0.8147    0.9058    0.1270    0.9134    0.6324    0.0975    0.2785    0.5469    0.9575    0.9649

因此,在示例中,首先使用A参数生成default变量。另一方面,生成第二个参数B而不重置随机生成器的参数,因此它与A不同。通过将参数重置为默认值,您可以获得第一个变量的相同结果。

rand命令为您提供均匀分布在[0,1]上的数字,使用rbg('default')您将一次又一次地获得相同的序列。

因此,根据MATLAB,您生成可重复的随机数

第2部分:用Excel编写

很简单,你只需要使用matlab函数xlswrite。请查看此处的文档。还有一个例子:

xlswrite('myExcel.xlsx',A);

答案 1 :(得分:0)

软件生成的随机数不是真正随机的,它们是伪随机的。在不深入研究技术细节的情况下,伪随机数序列是从种子值生成的,大多数语言/操作系统会将初始种子设置为从运行到运行的变化,通常与系统的内部时钟有关。 ,或以前运行的随机数发生器。因此,如果您运行相同的程序两次,大多数系统中的默认行为将给您不同的结果。

出于调试目的,这通常是不可取的,因此大多数系统通常会为您提供一种明确设置种子的方法。在Matlab中,您可以使用rng(种子)将种子设置回默认值,或者将其设置为特定数字,如果您需要,例如,十个不同的可重复随机数运行,以说服自己您的算法是正确的。 (即,rng(1)然后运行您的软件; r​​ng(2)并运行您的软件以获得具有不同随机数的不同结果; rng(1)以完全重复第一次运行等等。)

Excel在两个方面有点不同。首先,每次有更新时,Excel都会假定您要更新整个电子表格中的所有内容,包括对随机数生成器的所有调用,这会导致您看到的刷新。其次,据我所知,没有办法设置或重置种子。 Excel中通常的黑客攻击是可怕的 - 生成随机数,然后将结果复制为特殊值(只复制数字,而不是公式)到你需要的地方。

使用这些技术中的任何一种都要非常小心。它们对于调试是完全合法的,但是如果你将它们合并到一个程序中而忘记删除它们,那么你以后会非常不满意。