繁体   English   中英

在Python中乘法和加电时防止溢出错误

[英]Prevent overflow errors when multiplying and powering in Python

调用下面定义的函数biased_random时,如何防止错误?为防止数字太大或小的问题,参数scalebias的限制是什么?

def biased_random(scale, bias):
  return random.random() ** bias * scale

>>> sum(biased_random(1000, 10) for x in range(100)) / 100
64.94178302276364

>>> sum(biased_random(1000, 100000) for x in range(100)) / 100
0.0

>>> sum(biased_random(1000, 0.002) for x in range(100)) / 100
998.0704866851909

我将使用sys.maxint找出什么是溢出点。 然后将其除以n或根,然后与您拥有的数字进行比较:

r = random.random()
if sys.maxint ** (1.0/bias) < r:
    print "overflow imminent"
elif sys.maxint/float(scale) < r ** bias:
    print "overflow imminent"
else:
    print "overflow unlikely. To infinity, and beyond..."

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM