数据在向量中的均匀分布
Evenly distribution of data in vector
我想把一个52个数的向量平均分配到另外两个向量中。这样,每个相应的向量将有26个从主向量随机取的值。在这个例子中,它是存储在
vector<int>p1;
vector<int>p2;
for(int i=0;i<=storein.size();i++) //storein has a size of 52
{
int a=rand()%storein.size()+1;
int b=rand()%storein.size()+1;
if(a!=0)
{
cout<<"First player draw"<<endl;
p1.push_back(a);
cout<<p1[i]<<endl;
}
if(b!=0)
{
cout<<"Second player draw"<<endl;
p2.push_back(b);
cout<<p2[i]<<endl;
}
}
cout<<"p1 "<<p1.size()<<" p2 "<<p2.size()<<endl;
您可以对输入向量进行洗牌,然后将前26个条目放在p1
中,最后一个放在p2
中:
std::mt19937 rd{std::random_device{}()};
std::shuffle(input_vec.begin(),input_vec.end(),rd);
std::vector<int> p1 {input_vec.begin(),input_vec.begin()+26};
std::vector<int> p2 {input_vec.begin()+26, input_vec.end()};
如果您不想更改input_vec
,只需复制一份。
请注意,这种播种mt19937的方式可能不是很理想,因为它的状态空间比32位种子大得多。对于玩具程序和您的标准编程任务来说,这并不重要,但为了完整性起见:以下是我对正确地播种整个状态空间的看法。
最后一句:不要用rand()
,它不好。
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 向量中布尔值的均匀分布
- 如何在向量中保存不同的分布
- 计算整数向量的频率分布
- 数据在向量中的均匀分布
- C++中具有概率分布的向量的随机生成器
- Boost:任意分布的向量
- 返回Boost分布生成器从函数填充向量在c++中