Matlab - 高浓度1s(或0s)的二元向量

Joh*_*dol 3 random matlab

什么是生成大小为N的随机二进制向量X的最佳方法,其浓度为1s(或者,同步,0s),从非常低到非常高?

使用randint或unidrnd(如在这个问题中)将生成具有均匀分布的二进制向量,这不是我在这种情况下所需要的.

任何帮助赞赏!

Jon*_*nas 6

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)