C++:如何从一个数组中生成一个随机数
我是一个存储5个输入(int)的数组,在猜谜游戏中。C++:如何从一个数组中生成一个随机数
我想要做的是从该数组中生成一个随机数(从存储的五个数中选择一个),任何人都可以帮助我吗?
我familliar与兰特气电两用,但只选择一个范围OCH号内的随机数,而不是5个输入之间......
假设你的数组对象int arr[5]
那么你可以使用的一个以下方法取决于您使用的C++版本。
的C++所有版本:
int random_number = arr[rand() % 5];
请记住,这个解决方案没有偏见的问题困扰。如果你想才达到生成的数字分配好这个方法然后读下面的回答同一个问题:https://*.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)];
你的第一种方式遭受偏见问题。请参阅[这里](http://*.com/a/6943003/3422652)。 –
@ChrisDrew你绝对正确。但这并不意味着这种方式行不通。该解决方案将产生随机生成的数字,但分布非常不好。 – maxteneff
只需使用一个随机数生成器生成0,1,2,3,4
中的数字,并将该数字用作数组中的索引,显然。
rand
是我们通常不鼓励人们使用的东西,因为它不是线程安全的。但是,在你的简单情况下,它应该工作。
您可以简单地生成一个从0到数组长度为1的随机数x
,然后从中选取第x个数字。
事情是这样的:
int x = rand() % 5;
cout << inputs[x]; // here is your value
这听起来像是场工作,所以没有直接给你答案,逻辑需要遵循IS-
生成一个随机数字,它是在你输入数组的范围:
0 to ([number of inputs] - 1)
在你的情况下,将是0到4. 确保将随机数存储到变量中,例如一个称为randonInput
然后就从数组使用所生成的个数,选择变量,即:
int randomInput = inputArray[randomNumber];
然后,你将有存储在randomInput可变
随机输入做yournumber%5来构造数组索引。 –
使用C++ 11,您应该使用[''](http://en.cppreference.com/w/cpp/numeric/random),而不是旧的[rand](http://en.cppreference.com/w/cpp/numeric/random/rand) –