繁体   English   中英

最佳检查两个随机数的组合,如果它们通过条件则计数

[英]optimally check combination of two random numbers and count occurs if they pass condition

我想检查通过特定条件的两个值的随机组合。 我构建了一个片段,它以某种方式起作用:

from random import random
i, n = 0, 100
for _ in range(n):
    x = random()
    y = random()
    if x >= 0.5 and y >= 0.5:
         i += 1
         

但我觉得我可以在这里更有效地处理(即变量 i、x、y 可以以某种方式省略)。 我什至认为列表理解可以进一步改善它,但我必须承认在创建这个时,我完全失败了。

我最接近的方法是这样的:

[lambda x,y: [random(), random()] for _ in range(n) if x >= 0.5 and y >= 0.5 ]

不幸的是,这造成了 100 次出现——看起来条件没有应用到我的 x、y 变量上。

看起来我仍然是 python 初学者,有人可以建议我,如何以最有效的方式做到这一点(最小的足迹将是这里的关键决定)。

使用sum() function。

i = sum(random() >= 0.5 and random() >= 0.5 for _ in range(n))

布尔值可以被视为整数,其中True == 1False == 0 ,因此总和是正确的。

通过使用不需要生成两个随机数并且可以结合它们的概率这一事实,您可以更快地接受答案:

p_1 = 0.5
p_2 = 0.5
p_combined = 1-(1-p_1)*(1-p_2)
sum(random() >= p_combined for _ in range(n))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM