else语句中的语法无效

作为实数编码遗传算法的一部分,我必须生成一个遵循拉普拉斯分布的随机数Beta。
赠与关系是-
测试版(I)
=a-b*log(u(I))[如果r(I)
=a+b*log(u(I))[如果r(I)>0.5]
其中i从1变化到n(n是染色体的长度)。R(I)和u(I)是属于区间[0,1]的均匀随机数。A和b是常量。
我想为每个i创建一个Beta值列表,因此编写了以下代码行:

选择 | 换行 | 行号
  1.     bet = []
  2.     for i in range(chromlen):                                   
  3.         if (random.uniform(0,1) <= 0.5):
  4.             bet.append((a-b*(math.log(random.uniform(0,1)+0.000000000001)))
  5.         else:
  6.             bet.append((a+b*(math.log(random.uniform(0,1)+0.000000000001)))
  7.     beta = bet
  8.  

这样,我就有了一个随机生成的Beta值列表,并遵循拉普拉斯分布
当我运行程序时,我收到一条消息,说"您的程序中有一个错误:无效的语法",并且它用红色突出显示了'Else'。
我想不出我在哪里弄错了。请帮帮忙。谢谢。
我在前面的代码中导入了'随机'和'数学'。正如我前面提到的,这只是代码的一部分。

# 回答1


您在前一行上缺少右括号,)。此外,您在这里使用的是两个不同的随机数,第二个不一定是
β(I)=a-b*log(u(I))
β(I)=a+b*log(u(I)),如果第一次>0.5
我理解,只有当第一个条件得到满足时,第二个才会发挥作用。

标签: python

添加新评论