给定一系列概率在0.0到1.0之间的事件,请生成并推导每种组合发生的概率。您可能会假设以您选择的语言提供的任何构造形式提供了数字序列。
这是一个例子。您可能假定序列组合的长度适合内存:
{ 0.55, 0.67, 0.13 }
程序应打印每个组合以及该序列出现的相关概率。1表示输入序列的索引中的事件已发生,0表示该事件未发生。所需的输出如下(我不在乎打印工作,这只是出于算法目的的目的):
[0,0,0] = (1 - 0.55) * (1-0.67) * (1-0.13) = 0.129195
[0,0,1] = (1 - 0.55) * (1-0.67) * (0.13) = 0.019305
[0,1,0] = (1 - 0.55) * (0.67) * (1-0.13) = 0.262305
[0,1,1] = (1 - 0.55) * (0.67) * (0.13) = 0.039195
[1,0,0] = (0.55) * (1-0.67) * (1-0.13) = 0.157905
[1,0,1] = (0.55) * (1-0.67) * (0.13) = 0.023595
[1,1,0] = (0.55) * (0.67) * (1-0.13) = 0.320595
[1,1,1] = (0.55) * (0.67) * (0.13) = 0.047905
此问题与计算“笛卡尔积”成正切关系。
请记住,这是代码高尔夫球,因此,字节数最少的代码将获胜。
[0.129195, 0.019305, 0.262305, ..., 0.047905]
有足够的输出或者是[0,0,0], [0,0,1], ...
必要的?