我想生成一个比率为50%的随机二进制序列,即0和1的相同数量。这就是我到目前为止所做的:
length_sequence = 1000;
ratio = 0.5;
A = logical(randi([0 1],length_sequence,1));
唯一的问题是我不知道如何设定比率。
答案 0 :(得分:3)
比率可以解释为确定性(您希望在1000个值的每个实现中有500个零和500个零)或概率(实现可能比零,但该比率适用于大量的实现)。
您的代码适用于概率解释,所以我假设您的意思是确定性的。在这种情况下,用任意顺序的零和一个值填充<button id="this-button" onclick="buttonClicked();">
(例如:首先是所有的,然后全部为零),然后应用随机排列:
A
答案 1 :(得分:3)
您可以通过以下两种方式之一来解决这个问题(àLaLuis Mendo):
如果您知道每次创建此向量时需要正好500个零和500个零,则可以生成1到1000之间的集合索引(或者通常从1到多个元素生成如你所愿 - num_elements
)并提取500(或一般round(ratio*num_elements)
,其中ratio
在[0,1]
之间)。然后,您可以使用这些索引并将初始零向量中的位置设置为1:
num_elements = 1000;
ratio = 0.5; %// 50%
ind = randperm(num_elements, round(ratio*num_elements));
A = zeros(num_elements,1) == 1; %// Convert to logical
A(ind) = 1;
您可以从[0-1]
生成均匀分布的随机值,使用0.5生成阈值,或ratio
:
num_elements = 1000;
ratio = 0.5;
A = rand(num_elements, 1) >= ratio;
在概率意义上,这将向量中的每个值填充50%(或一般ratio
)机会使值0和50%(或一般1 - ratio
)机会使值为1。