【问题标题】:ranged random numbers in C [duplicate]C中的范围随机数[重复]
【发布时间】:2011-02-27 04:40:54
【问题描述】:

可能重复:
How to generate a random number from within a range - C

我正在寻找可以在 C 中使用的东西,它会给我一个介于 a 和 b 之间的随机数。所以像 rand(50) 这样的东西会给我一个介于 1 到 50 之间的数字。

【问题讨论】:

标签: c random


【解决方案1】:

来自 comp.lang.c 常见问题解答:How can I get random integers in a certain range?

【讨论】:

    【解决方案2】:

    您可以使用randrandom 来获取任意随机值,然后您可以获取结果并根据范围的大小对其进行修改,然后添加起始偏移量以将其置于所需范围内范围。例如:

    (rand()%(b-a))+a
    

    【讨论】:

    • 请注意,除非 (b-a) 是 2 的幂,否则您不会在这里得到均匀分布。它会稍微偏爱较小的值。
    • 是的,事实上即使是 rand 的人也建议不要使用 rand()%N 来获取从 0 到 N-1 的数字,因为分布会有些偏差。 num 从 1 到 10 的建议解决方案是 1 + (int) (10.0 * (rand() / (RAND_MAX + 1.0)));
    【解决方案3】:

    您需要使用rand()srand()

    http://linux.die.net/man/3/rand

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 2018-05-15
      • 2017-02-13
      • 1970-01-01
      • 2013-04-17
      • 1970-01-01
      相关资源
      最近更新 更多