【问题标题】:Generate random numbers with rand() except number zero [duplicate]使用 rand() 生成随机数,除了数字零 [重复]
【发布时间】:2015-02-27 01:21:10
【问题描述】:

我想用 rand() 方法生成 1 到 25 之间的随机数。
但是我只知道如何生成随机数,默认包含数字零:

int r = rand() % 26 /* random int between 0 and 25 */

有人吗?谢谢。

【问题讨论】:

    标签: c random


    【解决方案1】:

    很简单

    int r = 1 + rand() % 25 /* random int between 1 and 25 */
    

    但你应该使用这个

    int r = (int)(1.0 + 25.0 * rand() / RAND_MAX)
    

    正如 cmets 中所提到的,第二种是生成随机数的更稳健的方法,请参阅link

    【讨论】:

    • 此方法可能不起作用,具体取决于对均匀性的严格要求。
    • @void_ptr 你能详细说明一下吗?
    • rand() 生成器和 % 25 不对齐。如果您想要生成公平的数字,这是一个重要的技术问题。
    • 为什么是(1.0 + RAND_MAX)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2015-09-29
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多