Matlab 生成100个介于0和1之间的随机数并将其冻结

Matlab 生成100个介于0和1之间的随机数并将其冻结,matlab,random,generator,Matlab,Random,Generator,如何生成100个介于0和1之间的随机数并冻结,使其无法更改?我想用MATLAB。我使用Excel生成,但它不断变化,所以我受够了这些不断的变化。我有10个变量,必须为每个变量生成100个介于0和1之间的随机数。我还需要将这些生成的数字导出到Excel。非常感谢您的帮助。第1部分:生成可重复的随机数 我认为冻结是指在程序的不同运行中,随机数生成器生成相同的“随机”数序列 这已在MATLAB中使用命令rng解决 此函数采用的唯一参数是种子的值。在您的情况下,可以使用defaultvalue,这样每次

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

第1部分:生成可重复的随机数 我认为冻结是指在程序的不同运行中,随机数生成器生成相同的“随机”数序列

这已在MATLAB中使用命令
rng
解决

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

rng(“默认”)将rand、randi和randn使用的随机数生成器的设置设置为其默认值。这样,就产生了与重新启动MATLAB相同的随机数。默认设置为种子为0的Mersenne扭曲器

例如:

>> 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
因此,在本例中,首先使用
默认
参数生成
变量。另一方面,第二个参数
B
,是在不重置随机生成器的参数的情况下生成的,因此它与
A
不同。通过将参数重置为默认值,可以获得与第一个变量相同的结果

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

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


第2部分:用Excel编写 这很简单,只需使用matlab函数
xlswrite
。请检查此处的文档。有一个例子:

xlswrite('myExcel.xlsx',A);

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

出于调试目的,这通常是不可取的,因此大多数系统通常提供一种显式设置种子的方法。在Matlab中,您可以使用rng(seed)将seed设置回默认值,或者如果需要(比如)十次不同的可重复运行的随机数来证明您的算法是正确的,则可以将其设置为特定的数字。(例如,rng(1)然后运行您的软件;rng(2)使用不同的随机数运行您的软件以获得不同的结果;rng(1)精确地重复第一次运行,等等)

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


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

我想说的是,生成100个介于0和1之间的数字,所以1,2,3,…100,每个数字的值都在0和1之间?。。谢谢,我不明白你说的“冻结”是什么意思。除非你写了一个变量,否则它不会改变,或者你要求的是可复制的随机数?如果是,请阅读文档中的“种子”。