有关Python课程的介绍,我正在考虑在Python中生成一个随机浮点数,我看到了一个标准的推荐代码
import random
lower = 5
upper = 10
range_width = upper - lower
x = random.random() * range_width + lower
Run Code Online (Sandbox Code Playgroud)
对于从5到10但不包括10的随机浮点.
在我看来,通过以下方式可以实现同样的效果:
import random
x = random.randrange(5, 10) + random.random()
Run Code Online (Sandbox Code Playgroud)
因为那将给出5,6,7,8或9的整数,然后用小数点来表示它.
我的问题是,第二个代码仍会提供完全均匀的概率分布,还是不能保持第一个版本的完全随机性?
根据文件,然后是random()的确是一个统一的分布.
random(),在半开放范围[0.0,1.0]内均匀生成随机浮点数.Python使用Mersenne Twister作为核心生成器.
所以两个代码示例都应该没问题.要缩短代码,您可以同样:
random.uniform(5, 10)
Run Code Online (Sandbox Code Playgroud)
请注意,uniform(a, b)仅仅是a + (b - a) * random()如此相同,你的第一个例子.
第二个示例取决于您正在使用的Python版本.在3.2之前randrange()可能会产生略微不均匀的分布.
| 归档时间: |
|
| 查看次数: |
102 次 |
| 最近记录: |