我是 Python 的初学者,正在自学列表理解。我一直在处理几乎所有我一直在翻译为列表理解的 for 循环代码,但我非常坚持我认为是一个相当简单的循环。
n = 10000
def sim(y):
count = 0
for i in range(10000):
if 0.9 <= y[i] <= 1.8:
count += 1
probability = count/10000.0
print("P(a < x <= b) : {0:8.4f}".format(probability))
print ("\t case: \n"),sim([0.25 if random() < 0.8 else 1.5 for r in range(n)])
到目前为止,我一直在尝试以下变体,但都遇到了与使用列表相关的错误,例如“'int' object is unsubscriptable”和“unsupported operand type(s) for +: 'int' and 'list' ”。
def sim(y):
c4 = sum([y for range(y) in range(len(y)) if 0.9 < y[i] <= 1.8])/10000
print("P(a < x <= b) : {0:8.4f}".format(c4))
目的是基本上采用传递给 sim() 的参数并迭代它的长度,同时仅对那些在 0.9 和 1.8 之间的条件下发现为真的值递增 1。我正在尝试检查 n 个随机数中的每一个是否符合该条件。然后只对那些正确的相加。
顺便说一句,答案应该在 0.2 左右——如果你想检查它,只需考虑 1.5 是适合 0.9 和 1.8 之间的唯一方法。
感谢您在我学习过程中的耐心等待。