繁体   English   中英

向量中布尔值的均匀分布

[英]Uniform Spread of boolean values in a vector

我有一个布尔向量,例如:

vector<bool> bVec;

我使用回推在循环中用随机的1和0填充它:

bVec.push_back(0);
bVec.push_back(1);

我可以随机播放内容:

random_shuffle(bVec.begin(), bVec.end());

对于随机混洗的向量来说,这很好用,但是,如果我想要均匀分布的值,我似乎无法获得适当的向量。 即我想计算1和0的数量,并尽可能均匀地分布它们。 例如,如果我有3个1和7个0,我会想要像0,1,0,0,1,0,0,1,0,0(或类似的东西)

事实证明,编写自己的函数很花时间,而且很容易出错。 有没有我找不到的功能可以做到这一点?

谢谢。

万一有人遇到这个问题并需要一个答案(而不是像上面的评论那样争论语义),我按以下步骤解决了问题,并在伪代码中逐步说明了这一点:

1)创建一个向量,随机地将值随机混入,计算1并将其用作所需的数量,然后将其全部设置回0。 现在,您有一个期望的1数作为目标,可以在向量中均匀分布。 2)使用Matlabs linspace函数的C ++实现(可以在这里找到一些变体: https ://gist.github.com/jmbr/2375233)。 输入所需的1和向量的大小时,它将返回等距点,您可以向下舍入以在向量中创建索引。 3)将这些点设置为1。

结果是一个完美间隔的向量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM