Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 生成0和1的序列,以便在任何试验后1的概率为0.3_Matlab_Probability - Fatal编程技术网

Matlab 生成0和1的序列,以便在任何试验后1的概率为0.3

Matlab 生成0和1的序列,以便在任何试验后1的概率为0.3,matlab,probability,Matlab,Probability,我试图生成一个0和1的随机序列,这样每当生成一个序列时,1的概率是0.3。我在Matlab中尝试了以下内容 %%clear all; %%close all;clc; %%(rand(1,10)<=0.3) %%全部清除;%%全部关闭;clc;%%(rand(1,10)如果你想在最后精确地得到0.3的比例,你可以: n=1000; %should be a multiple of 10. x=[ones(1,n*3/10) zeros(1,n*7/10)]; x=x(randperm(n

我试图生成一个0和1的随机序列,这样每当生成一个序列时,1的概率是0.3。我在Matlab中尝试了以下内容

%%clear all; %%close all;clc; %%(rand(1,10)<=0.3)

%%全部清除;%%全部关闭;clc;%%(rand(1,10)如果你想在最后精确地得到0.3的比例,你可以:

n=1000; %should be a multiple of 10.
x=[ones(1,n*3/10) zeros(1,n*7/10)];
x=x(randperm(n));
基本上,它创建了一个
0.3
比例为
1
的数组

然后,它随机排列。

如果您想在最后精确地获得0.3的比例,可以执行以下操作:

n=1000; %should be a multiple of 10.
x=[ones(1,n*3/10) zeros(1,n*7/10)];
x=x(randperm(n));
基本上,它创建了一个
0.3
比例为
1
的数组



然后,它随机排列。

我尝试使用randi函数,但每次我得到序列中不同数量的函数时,您可能应该显示代码并更好地解释问题,以便在这里获得一些指导。%%全部清除;%%全部关闭;clc;%%(rand(1,10)我尝试了更多的n=1e5;x=(rand(1,n)@Mathias,啊,这是有道理的。但是,在这种情况下,如果1和0被表示为一个序列,那么该序列就不是真正的随机序列,因为序列的最后一个元素可以根据前面的元素知道。我尝试使用randi函数,但每次我在序列中得到不同数量的元素时,您可能应该显示代码并更好地解释它的问题,在这里获得一些指导。%%全部清除;%%全部关闭;clc;%%(兰德(1,10)我尝试了更多的n=1e5;x=(兰德(1,n)@Mathias,啊,这是有道理的。但是,在这种情况下,如果1和0被表示为一个序列,那么该序列就不是真正的随机序列,因为序列的最后一个元素可以根据前面的元素知道。对Matlab不够熟悉,但假设randperm是一个随机序列,这种方法是正确的:创建一个序列containing 30%的1和70%的0,并将其洗牌。在这种情况下,精确比例为0.3,但序列的最后一个元素始终是前面元素的确定函数。更一般地说,如果数据按顺序显示,则第n个元素的概率为“1”是前面n-1个元素值的函数。@cjh,是的,你完全正确。我认为OP真正想要的是他在问题中所写的:
x=(rand(1,n)值得注意的是,这显然不能保证在列表中的任何一点上都有这样的比例,只是在最后——我无法从需要的问题中确定感谢各位!我可以通过rand perm得到解决方案,而OLI使用rand函数是正确的!!!对Matlab不够熟悉,但假设randperm是一个洗牌,这方法是正确的:创建一个包含30%的1和70%的0的序列,并将其洗牌。在这种情况下,您得到的精确比例为0.3,但序列的最后一个元素将始终是前面元素的确定函数。更一般地说,如果数据按顺序显示,则第n个元素b的概率“1”是n-1前面元素值的函数。@cjh,是的,你完全正确。我认为OP真正想要的是他在问题中所写的:
x=(rand(1,n)值得注意的是,这显然不能保证在列表中的任何一点上都有这样的比例,只是在最后——我无法从需要的问题中确定感谢各位!我可以通过rand perm得到解决方案,而OLI使用rand函数是正确的!!!