什么是生成大小为N的随机二进制向量X的最佳方法,其浓度为1s(或者,同步,0s),从非常低到非常高?
使用randint或unidrnd(如在这个问题中)将生成具有均匀分布的二进制向量,这不是我在这种情况下所需要的.
任何帮助赞赏!
Laserallan的方法是要走的路.
对于具有10个元素和70%随机分布的向量,您可以编写
randVec = rand(10,1)<0.7;
Run Code Online (Sandbox Code Playgroud)
编辑如果你想要长度为N的X向量,随着数量的增加,你会写
thresVec = linspace(0,1,X); %# thresholds go from 0 (all 0) to 1 (all 1)
randVec = bsxfun(@lt,rand(N,X),threshVec); %# vectors are per column
Run Code Online (Sandbox Code Playgroud)
请注意,randVec是一个逻辑数组.根据您要对其进行的操作,您可能希望将其转换为双倍
randVec = double(randVec);
Run Code Online (Sandbox Code Playgroud)