我有一个整数列表intList = {1, 3. 5. 2}
(它只是一个示例整数和大小都是未知的)。我必须从该列表中选择一个随机数。
RandomInt = rand() % intList.size()
的工作方式与 RandomInt = rand() % 4
并生成介于1到4之间的randon数。而intList则不同。
如果我使用RandomInt = std::random_shuffle = (intList, intList.size())
仍然有错误。我不知道如何从列表中选择一个随机数。
答案 0 :(得分:6)
因为作为子步骤,你需要生成随机数,你可以用C ++ 11方式(而不是使用modulo,顺便提一下,known to have a slight bias toward low numbers):
假设您从
开始#include <iostream>
#include <random>
#include <vector>
int main()
{
const std::vector<int> intList{1, 3, 5, 2};
现在定义随机生成器:
std::random_device rd;
std::mt19937 eng(rd());
std::uniform_int_distribution<> distr(0, intList.size() - 1);
当您需要生成随机元素时,您可以这样做:
intList[distr(eng)];
}
答案 1 :(得分:2)
您只需要使用&#34;间接&#34;:
std::vector<int> list{6, 5, 0, 2};
int index = rand() % list.size(); // pick a random index
int value = list[index]; // a random value taken from that list
答案 2 :(得分:0)
int arrayNum[4] = {1, 3, 5, 2};
int RandIndex = rand() % 5; // random between zero and four
cout << arrayNum[RandIndex];