0

当调用下面定义的函数biased_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
4

1 回答 1

1

我会sys.maxint用来弄清楚溢出点是什么。然后将其除或 nth-root 并与您拥有的数字进行比较:

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..."

希望这可以帮助

于 2012-02-22T15:06:20.323 回答