如何从数组中生成随机数

C++: How to generate a random number from an array

本文关键字:随机数 数组      更新时间:2023-10-16

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

我想做的是从该数组中生成一个随机数(从存储的五个数字中选择一个),有人能帮助我吗?

我熟悉rand函数,但只能在一个范围内选择一个随机数,而不是在5个输入之间…

使用例如std::uniform_int_distribution获取0到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)];

简单地使用随机数生成器从0,1,2,3,4生成一个数字,并使用该数字作为数组中的索引,显然

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

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

像这样:

int x = rand() % 5;
cout << inputs[x]; // here is your value

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

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

0 to ( [number of inputs] - 1 )

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

的变量。

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

int randomInput = inputArray[randomNumber];

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