从我自己的数组中打印一个随机数

时间:2015-12-13 19:15:20

标签: c arrays

我一直在努力了解如何从我自己的数组中打印出一些随机数,不要将此与我想要将随机数生成数组混淆,这不是我尝试的去完成。 但是,我的代码就像这样

#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;
}

我也没有发现任何类似的问题,所以非常感谢一些帮助。

3 个答案:

答案 0 :(得分:3)

int number = myarray[rand() % 3];

这会生成一个随机数:0 1 2,然后从数组中访问该元素。

答案 1 :(得分:2)

您可以使用以下公式生成范围内的随机数:

rnd(min, max) = (rand() % (max - min)) + min;

在您的情况下,您min = 0max = 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)]);