加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

drand48()能否返回1?

发布时间:2020-12-16 09:22:20 所属栏目:百科 来源:网络整理
导读:drand48()的手册说: The drand48() and erand48() functions return non-negative, double-precision,floating-point values,uniformly distributed over the interval [0.0,1.0]. (source) 所以只是为了澄清:这是否意味着drand48()可以返回1.0?或者它是
drand48()的手册说:

The drand48() and erand48() functions return non-negative,
double-precision,floating-point values,uniformly distributed over
the interval [0.0,1.0].

(source)

所以只是为了澄清:这是否意味着drand48()可以返回1.0?或者它是否意味着返回值将是< 1.0? 我问,因为在暴力测试drand48()似乎永远不会返回1.0.它通常返回0,但从不返回1.0.然而,对我来说,drand48()的手册似乎说1.0确实是一个可能出现的结果,虽然我还没能在实践中使drand48()返回1.0. 这里有谁可以对此有所了解?结果总是小于1.0还是等于1.0?

解决方法

“超过间隔[0.0,1.0].”假设间隔的数学符号是安全的.括号间隔结束是排他性的,方括号间隔结束是包含的.因此根据符号,返回值可以是1.0.

但是这是旧版本的文档,当前的版本指定[0.0,1.0]作为间隔(这意味着它不能是1.0):

>SingleUNIX?规范,版本2 http://pubs.opengroup.org/onlinepubs/7908799/xsh/drand48.html

列表[0.0,1.0]
>而

> Open Group Base Specifications Issue 7,2018 edition
http://pubs.opengroup.org/onlinepubs/9699919799/functions/drand48.html
> Linux手册页 – POSIX.1-2001
https://www.systutorials.com/docs/linux/man/3-drand48/
> Linux手册页 – POSIX.1-2001.
https://linux.die.net/man/3/erand48

所有列表[0.0,1.0)

所以我倾向于相信[0.0,1.0]是正确的规范. (可能是因为SUS2是自1997年以来的定义发生了变化,或者是页面上的拼写错误,但我没有这方面的专业知识所以我不会权衡)

in a brute force test drand48() never seems to return 1.0. It often
returns 0,but never 1.0.

这似乎非常可疑. 0.0应该与区间中的任何其他数字具有相同的概率,因此“它经常返回0”看起来不正确.检查您是否完全精确打印.

作为旁注,请注意dran48 and friends are obsolete

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读