con*_*rt3 2 random matlab sequence prng
任何人都可以帮我用Matlab创建一个长度为1000的简单伪随机序列+ -1整数?
即一个序列,如
-1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1
Run Code Online (Sandbox Code Playgroud)
我尝试使用下面的代码,但这是RANGE -1到1,其中包含0个值.我只想要-1和1.谢谢
x = randi([-1 1],1000,1);
Run Code Online (Sandbox Code Playgroud)
您可以尝试生成一个随机的浮点数序列,[0,1]并将任何小于0.5的值设置为-1,将任何大的值设置为1:
x = rand(1000,1);
ind = x >= 0.5;
x(ind) = 1;
x(~ind) = -1;
Run Code Online (Sandbox Code Playgroud)
我的另一个建议是使用sign结合的功能,randn以便我们可以生成正数和负数. sign生成值为-1,0,1的值,具体取决于输入的符号.如果输入为负,则输出为-1,正数时为+1,0时为0.您可以对输出为0的任何值进行额外检查,将它们设置为-1或1:
x = sign(randn(1000,1));
x(x == 0) = 1;
Run Code Online (Sandbox Code Playgroud)
还有一个(灵感来自Luis Mendo)将有一个矢量[-1,1]并用于randi生成1或2的序列,然后使用它并将样本放入此向量中:
vec = [-1 1];
x = vec(randi(numel(vec), 1000, 1));
Run Code Online (Sandbox Code Playgroud)
这个代码可以扩展到vec你想要的任何地方,我们可以从任何元素中抽样vec产生一个随机的值序列(Luis Mendo观察.谢谢!).