document.write('
这道题要求一个概率的问题,由于10个房间里放的金币的数量是随机的,因此,在编程实现的时候首先需要生成10个随机数来模拟10个房间里金币的数量。然后判断通过这种策略是否能邑拿到最多的金币。如果仅仅通过一次模拟来求拿到最多金币的概率显然是不准确的,那么就需要进行多次模拟,通过记录模拟的次数m,拿到最多金币的次数n,从而可以计算出拿到最多金币的概率n/m。显然这个概率与金币的数量以及模拟的次数有关系。模拟的次数越多越能接近真实值。下面以金币数为1到10的随机数,模拟次数为1000次为例给出实现代码:
    import random
    
 
    """
    方法功能: 总共n个房间, 判断用指定的策略是否能拿到最多金币
    返回值: 如果能拿到返回True, 否则返回False
    """
    def getMaxNum(n):
    if n<1:
    print "参数不合法"
    return
    a=[None]*n
    #随机生成n个房问里金币的个数
    i=0
    while i<n:
    a[i]=random.uniform(1,n) #生成1~n的随机数
    i+=1
    #找出前四个房间中最多的金币个数
    max4=0
    i=0
    while i<4:
    if a[i]>max4:
    max4=a[i]
    i+=1
    i=4
    while i<n-1:
    if a[i]>max4: #能拿到最多的金币
    return True
    i+=1
    return False# 不能拿到最多的金币
    
 
    if __name__=="__main__":
    monitorCount=1000+0.0
    success=0
    i=0
    while i<monitorCount:
    if getMaxNum(10):
    success+=1
    i+=1
    print success/monitorCount
    程序的运行结果为:
    0.421
    运行结果分析:

    运行结果与金币个数的选择以及模拟的次数都有关系,而且由于是个随机问题,因此同样的程序每次的运行结果也会不同。 

');