C ++:如何从数组生成随机数

时间:2015-10-19 10:02:17

标签: c++ arrays random

我是一个在猜谜游戏中存储5个输入(int)的数组。

我想要做的是从该数组中生成一个随机数(从存储的五个数中选择一个),任何人都可以帮我这个吗?

我很喜欢rand-fuction但只能在一个范围内选择一个数字,而不是在5个输入之间...

5 个答案:

答案 0 :(得分:6)

使用例如std::uniform_int_distribution获取0到4之间的值(包括0和4),并将其用作数组的索引。

答案 1 :(得分:4)

假设您的数组对象是int arr[5],那么您可以根据您使用的C ++版本使用以下方法之一。

所有版本的C ++:

int random_number = arr[rand() % 5];

请记住,此解决方案存在偏差问题。如果您希望以这种方式实现生成数字的良好分配,请阅读以下对相同问题的回答:https://stackoverflow.com/a/6943003/1289981

从C ++ 11开始(最正确的方式):

std::random_device rd;
std::default_random_engine e1(rd());
std::uniform_int_distribution<int> uniform_dist(0, 4);

int random_number = arr[uniform_dist(e1)];

答案 2 :(得分:0)

只需使用随机数生成器从0,1,2,3,4生成一个数字,并在数组中使用该数字作为索引。显然。

rand是我们通常不鼓励人们使用的东西,因为它不是线程安全的。但是,在您的简单情况下,它应该可以工作。

答案 3 :(得分:0)

你可以简单地从0到数组的长度生成一个随机数x - 1,然后从中选择第x个数字。

这样的事情:

int x = rand() % 5;

cout << inputs[x]; // here is your value

答案 4 :(得分:0)

这听起来像是课程工作,所以没有直接给出答案,你需要遵循的逻辑是 -

生成一个在输入数组范围内的随机数:

0 to ( [number of inputs] - 1 )
在你的情况下,

将是0到4。 确保将随机数存储到变量中,例如一个名为randonInput

的变量

然后使用生成的数字从数组中选择,即:

int randomInput = inputArray[randomNumber];

然后您将随机输入存储在randomInput变量