Python random.expovariate() 零除法错误
Python random.expovariate() zero division error
当我在代码中使用 random.expovariate(1/6) 时,出现零除法错误。任何人都知道为什么?这是我的代码:
randomSeed = 1000
random.seed(randomSeed)
def function1(env):
for i in range(1000):
time = random.expovariate(1/6)
yield env.timeout(time)
这是错误:
File "..\simulation.py", line 108, in function1
time = random.expovariate(1/6)
File "..\random.py", line 440, in expovariate
return -_log(1.0 - self.random())/lambd
ZeroDivisionError: float division by zero
random.expovariate()
输入应为非零。我猜你是 运行 python2 而 1/6
是 0。将它更改为 1./6.
应该没问题。
如何调试
- 您的错误消息的最后一行显示
ZeroDivisionError: float division by zero
。
- 上面说这发生在
expovariate
的第 440 行,当时它试图评估 return -_log(1.0 - self.random())/lambd
。唯一的划分是 lambd
.
- 如果您转到 documentation for
expovariate
,您会注意到 lambd
是该函数的参数,第一条错误消息告诉您您已将1/6
。 Q.e.d。 1/6
必须为零。您可以进入交互式 Python 会话进行确认。
- 到那时,回忆或查找整数除法的工作原理,以得出将
1/6
更改为使用浮点数的解决方案即可实现您想要的效果。
有些错误消息可能非常晦涩难懂,但它们可以解释为什么、在哪里以及如何以语言的最佳能力出现问题。阅读它们并跟踪链回是一项非常值得学习的技能。
当我在代码中使用 random.expovariate(1/6) 时,出现零除法错误。任何人都知道为什么?这是我的代码:
randomSeed = 1000
random.seed(randomSeed)
def function1(env):
for i in range(1000):
time = random.expovariate(1/6)
yield env.timeout(time)
这是错误:
File "..\simulation.py", line 108, in function1
time = random.expovariate(1/6)
File "..\random.py", line 440, in expovariate
return -_log(1.0 - self.random())/lambd
ZeroDivisionError: float division by zero
random.expovariate()
输入应为非零。我猜你是 运行 python2 而 1/6
是 0。将它更改为 1./6.
应该没问题。
如何调试
- 您的错误消息的最后一行显示
ZeroDivisionError: float division by zero
。 - 上面说这发生在
expovariate
的第 440 行,当时它试图评估return -_log(1.0 - self.random())/lambd
。唯一的划分是lambd
. - 如果您转到 documentation for
expovariate
,您会注意到lambd
是该函数的参数,第一条错误消息告诉您您已将1/6
。 Q.e.d。1/6
必须为零。您可以进入交互式 Python 会话进行确认。 - 到那时,回忆或查找整数除法的工作原理,以得出将
1/6
更改为使用浮点数的解决方案即可实现您想要的效果。
有些错误消息可能非常晦涩难懂,但它们可以解释为什么、在哪里以及如何以语言的最佳能力出现问题。阅读它们并跟踪链回是一项非常值得学习的技能。