我一直在努力了解如何从我自己的数组中打印出一些随机数,不要将此与我想要将随机数生成数组混淆,这不是我尝试的去完成。 但是,我的代码就像这样
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL));
int myarray[] = { 2, 5, 10 };
//Its here where i dont know how to use rand() in to make the program generate one random number from my array, either 2, 5 or 10. I've tried, but failed.
return 0;
}
我也没有发现任何类似的问题,所以非常感谢一些帮助。
答案 0 :(得分:3)
int number = myarray[rand() % 3];
这会生成一个随机数:0 1 2
,然后从数组中访问该元素。
答案 1 :(得分:2)
您可以使用以下公式生成范围内的随机数:
rnd(min, max) = (rand() % (max - min)) + min;
在您的情况下,您min = 0
和max = 3
会为您提供rand() % 3
。
答案 2 :(得分:0)
其他答案使用rand() % 3
生成(伪)&#34;随机&#34; 0到2之间的数字(包括两者)。这可能对你有用,但实际上不是随机的,因为rand()在RAND_MIN和RAND_MAX之间返回的数字在它们通过给定数n的可分性方面不是均匀分布的(因为模数关系的等价类具有不等的数量)成员如果RAND_MAX不是n的倍数。
在给定范围内获取(伪)随机数的更好算法是:
int RangeRandom(int min, int max) {
int n = max - min + 1;
int remainder = RAND_MAX % n;
int x;
do
{
x = rand();
} while (x >= RAND_MAX - remainder);
return min + x % n;
}
然后您可以使用函数RangeRandom
,如下所示:
int myArray[] = { 0, 3, 5 };
printf("%d", myArray[RangeRandom(0, 2)]);