- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
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
):
单一 UNIX ® 规范,版本 2 http://pubs.opengroup.org/onlinepubs/7908799/xsh/drand48.html
列出 [0.0, 1.0]
同时
The Open Group 基础规范第 7 期,2018 年版
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)
是正确的规范。 (可能是自 1997 年的 SUS2 以来定义发生了变化,或者它是页面上的错字,但我对此没有专业知识,所以我不会权衡)
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
关于drand48() 能返回 1 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53434572/
我有一个 C 代码,我试图在 Cygwin 中编译它,它包含 drand() 和 srand() 函数。我安装了带有 Cygwin 的 Windows Vista,代码似乎运行良好,但我的电脑坏了,我
我是 Swift 的新手,刚刚在教程中看到这段代码用于生成随机角度。 func random() ->CGFloat{ return CGFloat(Float(arc4random()) /
我是一名优秀的程序员,十分优秀!