gpt4 book ai didi

c - 如何使用 rand() 创建一个随机 double ?

转载 作者:太空宇宙 更新时间:2023-11-04 06:38:05 24 4
gpt4 key购买 nike

为了生成随机 double ,有drand48,但是

These functions are declared obsolete by SVID 3, which states that rand(3) should be used instead.

我如何使用 drand48 构建我的随机替身?附带说明一下,随机 float ?

简单地连接来自 rand() 的两个 int 并转换可能会导致NaN,这是 Not Acceptable 。我想避免只使用 32 随机双位。

最佳答案

不幸的是,在 Linux 的手册页中引用了一个过时的标准。如果我没看错的话,SVID 3 于 1986 年出版,并且自古以来就被淘汰了。 POSIX 拥有这一系列功能,并且没有计划逐步淘汰它们。

但是如果你在使用它,请考虑使用 erand48 而不是 drand48。它的优点是您可以自己为其提供种子状态。它是可重入的,如果您在线程环境中使用它(并以不同方式初始化线程的种子)通常表现更好,或者如果您需要它进行可重现模拟,它是确定性的。

唯一需要记住的一点是,它只提供 48 位的伪随机数。通常的 double 算法是 52 位的,所以要小心不要使用最低的 4 位,它们是不好的。

关于c - 如何使用 rand() 创建一个随机 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289646/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com