相关疑难解决方法(0)

如何改组std :: vector?

我正在寻找一种通用的,可重用的方式来改变std::vectorC++中的一个.这就是我目前的做法,但我认为它不是很有效,因为它需要一个中间数组,它需要知道项目类型(在这个例子中是DeckCard):

srand(time(NULL));

cards_.clear();

while (temp.size() > 0) {
    int idx = rand() % temp.size();
    DeckCard* card = temp[idx];
    cards_.push_back(card);
    temp.erase(temp.begin() + idx);
}
Run Code Online (Sandbox Code Playgroud)

c++ shuffle stdvector

86
推荐指数
4
解决办法
7万
查看次数

创建无重复的随机数序列

重复:

O(1)中的唯一随机数?

我想要一个伪随机数生成器,它可以按随机顺序生成没有重复的数字.

例如:

随机(10)

可能会返回5,9,1,4,2,8,3,7,6,10

有没有更好的方法来做到这一点,除了使数字的范围和洗牌,或检查生成的列表重复?


编辑:

此外,我希望它在没有整个范围的情况下有效地生成大数字.


编辑:

我看到每个人都建议使用随机算法.但是,如果我想生成大的随机数(1024字节+),那么该方法将占用更多的内存,而不是我刚使用常规RNG并插入到Set中,直到它是指定的长度,对吧?对此没有更好的数学算法.

c c++ random algorithm

38
推荐指数
5
解决办法
7万
查看次数

标签 统计

c++ ×2

algorithm ×1

c ×1

random ×1

shuffle ×1

stdvector ×1