如何从给定的一组值生成随机数?

时间:2014-07-17 16:59:19

标签: c random srand

int main()
{
    srand(time(NULL));
    int r=rand();
}

上述函数可以生成任何数字,但如果我想从给定的一组值生成数字,该怎么办呢 例如,如果我想随机生成一个数字,但只能从值4,6,1,7,8,3生成 有没有办法实现这个目标?

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:5)

非常简单。创建一个数组。有你想要的输出(4,6,1,7,8,3)。然后在数组中选择一个随机存储桶。 % 6基本上选择值0 - 5,它们是数组中的索引。

int main()
{
    srand(time(NULL));
    int myArray[6] = { 4,6,1,7,8,3 };
    int randomIndex = rand() % 6;
    int randomValue = myArray[randomIndex];
}

有关如何进一步操纵rand()的一些信息。

rand() % 7 + 1

说明:

  • rand()返回0到大数字之间的随机数。

  • %7在除以7后得到余数,这将是0到6之间的整数。

  • 1将范围更改为1到7(包括1和7)。

答案 1 :(得分:2)

如果您想要随机选择一组预定义的值,则将它们放在一个数组中,然后使用rand将索引放入数组中。

参见例如this old SO answer了解如何获取范围内的随机数(即在零和数组大小之间)。

答案 2 :(得分:0)

您可以获取所需的随机值列表并将其存储在数组中。然后,您可以从列表范围中选择一个随机数,并选择指定索引处的位置。

答案 3 :(得分:0)

您可以将随机数除以只剩下剩余的数字。 use是您想要的数字数组的索引

例如,如果你取(随机数%3)你会得到0,1,2 所以你可以使用3个想要数字的数组