使用c++在离散区间上选取整数



给定一组N个整数(彼此之间都有1个单位距离),我想用每个数字T乘以每个来创建一个向量。

假设X=[1,2,…],N]是我的一组数字,我想创建一个大小为T.N的向量,使得x中的每个x出现$T$乘以每个(顺序无关)。

我的想法如下:

使用c++的原始库,我从X中随机选择一个数字,并保存这个数字被选中的次数,在X被选中T次后,我将集合X分成两部分,说X1=[1,2,…,X]和X2=(X,…,N]。因此,为了随机取下一个数字,我之前生成一个均匀的(0,1)数字,如果它大于1/2,我从X2和X1中选择新数字,否则

继续这样,假设现在有K个数字已经被选了T次。我将从K+1个集合中选出下一个数字,这些集合是通过移除这些选定的值生成的。为了选择这些区间中的一些,我再次生成一个(0,1)数字,并将(0,1)区间在K+1上"分割"为长度(1/K+1)的相等部分,并相应地选择下一个集合。

明白了吗?

如何将列表复制到vector中三次然后随机化?<algorithm>std::random_shuffle()std::shuffle()

最新更新