[英]C++ - Efficient way to generate random bitset with configurable mean “1s to 0s” ratio
[英]Generate a fixed number of 1s on random positions
在只应包含数字0
和1
的vector
,是否有可能使数字1随机出现n次?
例
vector
大小5, 1
必须在发生随机两次vector
[0,1,0,1,0]
vector
大小8, 1
必须在随机出现5次vector
[1,1,0,0,0,1,0,1]
等等..
如何在C ++中完成?
尝试这个:
#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
void print_v (const std::vector <int>& v)
{
for (int i : v)
std::cout << i;
std::cout << "\n";
}
int main()
{
std::vector <int> v;
v.push_back (1);
v.push_back (1);
v.push_back (0);
v.push_back (0);
v.push_back (0);
print_v (v);
std::random_device rd;
std::mt19937 g (rd ());
std::shuffle (v.begin (), v.end (), g);
print_v (v);
}
代表输出:
11000
00011
(我将留给您构造原始的,未改组的向量)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.