首页 > 试题广场 >

骰子期望

[编程题]骰子期望
  • 热度指数:2037 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
扔n个骰子,第i个骰子有可能投掷出Xi种等概率的不同的结果,数字从1到Xi。所有骰子的结果的最大值将作为最终结果。求最终结果的期望。

输入描述:
第一行一个整数n,表示有n个骰子。(1 <= n <= 50)
第二行n个整数,表示每个骰子的结果数Xi。(2 <= Xi <= 50)


输出描述:
输出最终结果的期望,保留两位小数。
示例1

输入

2
2 2

输出

1.75
L=[2,3,5]
p=list(range(max(L)+1))
P=list(range(max(L)+1))
p_sum=0
def FUN(N,K):
    return min(1,K/N)
for i in range(1,max(L)+1):
    P[i]=1
    for j in L:
        P[i]=P[i]*FUN(j,i)
    if i>1:
        p[i]=P[i]-P[i-1]
    else:
        p[i]=P[i]
    p_sum=p_sum+i*p[i]
print(p_sum)
发表于 2022-12-23 13:48:20 回复(0)
def frac(a, b):
    if a > b:
        return 1
    if a <= b:
        return a / b

n = int(input())
x = list(map(int, input().split()))

m = max(x)
sum = 0
temp0 = 0
temp1 = 1
for i in range(1, m + 1):
    for j in x:
        temp1 *= frac(i, j)
    sum += (temp1 - temp0) * i
    temp0 = temp1
    temp1 = 1
print("{:.2f}".format(sum))

发表于 2020-08-08 14:31:49 回复(0)