如何从数组中生成随机数
C++: How to generate a random number from an array
我有一个存储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变量
相关文章:
- if数组上的随机数
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 具有随机数的二维数组不会更改
- 如何在 c++ 中从数组中选择一个随机数?
- C++ 用于在数组中打印字符串的随机数
- 如何防止每次 Arduino 启动时颜色数组都是相同的随机数组
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 需要关于如何将我的随机数数组连接到冒泡排序的帮助
- 如何对0,1,..中的k个随机数进行采样..,n-1,而不缓存到数组
- 使用数组生成随机数
- 测量我的随机数数组打印的时间始终显示为 0 秒
- 数组初始化为所有元素为零,吐出随机数
- 生成随机数并将它们放入数组中
- 如何在C 中创建正常分布式随机数生成器的数组
- 将范围随机数保存到数组而不重复的函数
- 使用具有唯一随机数的结构数组创建多个对象
- visual如何在C++中创建一个随机数数组
- 双精度随机数数组
- 随机数数组每次都是相同的
- 使用英特尔TBB填充随机数数组