【问题标题】:How to generate random number from a given set of values?如何从给定的一组值中生成随机数?
【发布时间】:2014-07-17 16:59:18
【问题描述】:
int main()
{
    srand(time(NULL));
    int r=rand();
}

上面的函数可以生成任何数字,但是如果我想从给定的一组值中生成一个数字呢。
例如,如果我想随机生成一个数字,但只能从值 4,6,1,7,8,3.
有什么方法可以实现吗?

任何帮助将不胜感激。

【问题讨论】:

标签: c random srand


【解决方案1】:

这很简单。创建一个数组。具有您想要的输出(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(含)。

【讨论】:

  • 你的意思是r = myArray[rand()%6] 对吧?否则你为什么定义muArray
  • @chouaib 修复了它,更有意义,谢谢。我有点懒了。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      你可以除掉随机数,只取剩下的。 用作您想要的数字数组的索引

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-17
        • 2012-06-09
        • 2011-09-18
        • 1970-01-01
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多