从整数列表中选择一个随机数

时间:2016-09-29 06:03:51

标签: c++

我有一个整数列表intList = {1, 3. 5. 2}(它只是一个示例整数和大小都是未知的)。我必须从该列表中选择一个随机数。

RandomInt = rand() % intList.size() 

的工作方式与 RandomInt = rand() % 4

类似

并生成介于1到4之间的randon数。而intList则不同。

如果我使用RandomInt = std::random_shuffle = (intList, intList.size()) 仍然有错误。我不知道如何从列表中选择一个随机数。

3 个答案:

答案 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];