我想用随机整数填充一个向量,但其中不能有重复项。
首先,我有这段代码将numberOfSlots随机整数放在 0 到 7 之间的向量中(numberOfSlots可以是 2 到 20):
srand((unsigned int)time(NULL));
unsigned int min = 0;
unsigned int max = 7;
std::vector<unsigned int> v;
for (int i = 0; i < numberOfSlots; i++) {
unsigned int rdm = std::rand() % (max - min + 1) + min;
v.push_back(rdm);
}
这是允许重复整数时的代码。这工作正常!
现在我想更改该代码,以便从相同的可能整数随机池(min到max)生成的随机整数仅在它不在向量中时才被添加。
因此,如果例如numberOfSlots为 5,则向量将有 5 个从池中随机选择但不相同的条目,例如 7、1、3、5、0。如果numberOfSlots为 8,则向量将为例如3、1、2、7、6、0、4、5。
我知道如何洗牌向量和东西,但我无法让它工作。我想我必须使用一个while循环并检查向量中所有已经存在的整数与要添加的新随机数,如果它已经在那里生成一个新的随机数并再次检查,等等,但我不知道
我是初学者,这真的很难。有人可以给我一个提示吗?我将不胜感激...非常感谢