根据权重分配随机抽取纸牌

# coding:utf-8
import random

def main(l):
    # 计算权重总数
    total = sum([x[1] for x in l])
    # 随机获取0到total里的随机数
    n = random.uniform(0,total)
    num1=0
    for k,v in l:
        # 1 num1=0 num1+v=10
        # 2 num1=10 num1+v=30
        # 3 num1=30 num1+v=45
        if num1<=n and n<=num1+v:
            return k
        num1+=v


if __name__ == '__main__':

    # 测试纸牌
    cart = 'cart2'
    # 测试出牌次数
    num=10000
    count=0
    i = 0
    while i<=num:
        l = [['cart1', 10], ['cart2', 20], ['cart3', 15]]
        a=main(l)
        if a == cart:
            count+=1
        i+=1
    print 'cart1的概率为:%s'%(float(count)/float(num)*100)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值