设置-我有一个嵌套列表的列表(称为中继集),如下所示:
relay_sets = [
[[80100, 'a']],
[[75000, 'b']],
[[64555, 'c']],
[[55000, 'd'], [44000, 'e']],
[[39000, 'f'], [2000, 'g']],
[[2000, 'h'], [999, 'i'], [999, 'j']],
[[999, 'k'], [999, 'l'], [343, 'm']]
]
将用户放入其中一个中继集(概率一致),然后再次使用子列表中的一个嵌套列表(概率相等)。因此,例如,用户有1/7的机会被放入[[80100, 'a']]
,但随后保证使用[80100, 'a']
,而用户有1/7的机会被放入[[55000, 'd'], [44000, 'e']]
,然后有1/2的机会使用[55000, 'd']
。你知道吗
我写了一个脚本,找到使用某种中继的可能性:
def prob_using_relay(relay, relaysets):
prob1 = 1 / float(len(relaysets))
for index, item in enumerate(relaysets):
for i in item:
if relay in i:
num_relays_in_set = len(relaysets[index])
prob2 = 1 / float(num_relays_in_set)
total_prob = float(prob1 * prob2)
return total_prob
print prob_using_relay(80100, relay_sets) # gives correct answer of 0.142857142857
我的问题是我不知道如何解释重复的。因此,如果我想知道使用999带宽的中继的可能性,答案应该是(2/3 * 1/7 + 2/3 * 1/7)
,但是我的脚本给出了1/21
。或者如果我想知道使用2000带宽的中继的可能性,答案应该是(1/2 * 1/7 + 1/3 * 1/7)
,而不是(1/2 * 1/7)
。你知道吗
有人能帮我修改一下我的函数来解释重复的吗?你知道吗
输出:
此外,还可以使用分数:
你的代码有很多问题。你在对浮子做无用的施放。另一个原因是它不能处理超过2级的概率。这里有一个递归方法可以处理这个问题:
相关问题 更多 >
编程相关推荐