Python 2.7 &引用;“最佳”;生成随机浮动的方法?
我正在开发一个程序,它可以执行大量基于偶然性的计算(疯狂,嗯!),为了使计算更容易调整到第n级,我一直在使用浮点数 我一直使用的基本格式大致如下:Python 2.7 &引用;“最佳”;生成随机浮动的方法?,python-2.7,floating-point,Python 2.7,Floating Point,我正在开发一个程序,它可以执行大量基于偶然性的计算(疯狂,嗯!),为了使计算更容易调整到第n级,我一直在使用浮点数 我一直使用的基本格式大致如下: event_chance = 47.25 randnum = random.uniform(0.01, 100.0) if randnum <= event_chance: do_something else: dont 事件概率=47.25 randnum=随机均匀(0.01100.0) 如果randnum我怀疑你的概率略有
event_chance = 47.25
randnum = random.uniform(0.01, 100.0)
if randnum <= event_chance:
do_something
else:
dont
事件概率=47.25
randnum=随机均匀(0.01100.0)
如果randnum我怀疑你的概率略有下降,下降了0.01%
对于这种情况,我倾向于直接使用random(),它将返回一个从0到1的浮点值,它可能是0,但永远不会是1。所以如果(random.random()>=0.4725):…
-最坏情况下,误差应该是1/(2**19937-1)
请注意,当要求指定范围内的随机数时,有些随机数生成器会这样做,而其他随机数生成器则不包括高值(因此,对于某些随机数生成器,低值为0,高值为3的随机整数将返回0、1或2,而其他随机数生成器可能返回0、1、2或3)。阅读文档
在random.uniform的情况下,根据方程式a+(b-a)*random()中的浮点舍入,端点值b可能包括在范围内,也可能不包括在范围内。
对于浮点数,这当然不是什么问题
当然,将两个浮点数与“=”进行比较总是有风险的。不必挖掘太多-为随机生成器重置种子就足够了?random.seed(x)是您更改种子的地方。我对选择0.01而不是0作为低端持怀疑态度-这似乎非常武断。但是,您应该能够对其进行单元测试。收集几百万个样本,计算你点击if语句每个分支的次数。它是否足够接近目标频率?