我正在寻找一种通用的,可重用的方式来改变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) 我想要一个伪随机数生成器,它可以按随机顺序生成没有重复的数字.
例如:
随机(10)
可能会返回5,9,1,4,2,8,3,7,6,10
有没有更好的方法来做到这一点,除了使数字的范围和洗牌,或检查生成的列表重复?
此外,我希望它在没有整个范围的情况下有效地生成大数字.
我看到每个人都建议使用随机算法.但是,如果我想生成大的随机数(1024字节+),那么该方法将占用更多的内存,而不是我刚使用常规RNG并插入到Set中,直到它是指定的长度,对吧?对此没有更好的数学算法.