我是一个在猜谜游戏中存储5个输入(int)的数组。
我想要做的是从该数组中生成一个随机数(从存储的五个数中选择一个),任何人都可以帮我这个吗?
我很喜欢rand-fuction但只能在一个范围内选择一个数字,而不是在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变量
中