Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中进行乘法和加电时防止溢出错误_Python_Numeric_Multiplication_Limits - Fatal编程技术网

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

在Python中进行乘法和加电时防止溢出错误,python,numeric,multiplication,limits,Python,Numeric,Multiplication,Limits,调用下面定义的函数biasted_random时,您将如何防止出现错误?参数scale和bias的限制是什么,以防止出现大数或小数问题 def biased_random(scale, bias): return random.random() ** bias * scale >>> sum(biased_random(1000, 10) for x in range(100)) / 100 64.94178302276364 >>> sum(bias

调用下面定义的函数biasted_random时,您将如何防止出现错误?参数
scale
bias
的限制是什么,以防止出现大数或小数问题

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..."
r=random.random()
如果sys.maxint**(1.0/偏差)

希望这有帮助

这里的定义似乎很清楚。这定义了浮点数的限制。10**308是非常明确的上限。这就是你要找的吗?你还需要知道什么?找出你机器上的溢出是什么(应该是
sys.maxint
)。然后你就可以测试了。我发布的是我与某人进行的理论讨论的一个实现,一段时间前我正在测试它,似乎它是有效的(根据S.Lott评论的限制10**308),但想知道你是如何在理论讨论中解决它的。这是代数。您要做的是测试
x*c
(其中
c
是一个常量)是否不会溢出。您知道(或很容易找到)溢出值。如果
x
大于这个数字,那么你就会溢出/c