zoukankan      html  css  js  c++  java
  • 利用random模块做一个抢红包功能

    我们都知道random模块是一个生成随机数的模块,用它来做抢红包的功能很合适。

    抢红包,抢到的金额是随机的,但怎么让每个人抢到的随机金额公平合理呢

    比如:我想发一个100元的红包让10个人抢,我可以把这100看成是一个数轴,通过random模块一次随机产生9个数,这样就把这100分成了10段,每段的数就是抢到的钱数。

    import random  #首先要引入random模块
    def hong_bao(money,num):  #函数需要两个参数(钱数,人数)
        money = money * 100  #抢红包我们是能抢到分的,这里先将钱数*100,下面处理的都是整数比较方便,再最后把钱数/100就好了
        hongbao = random.sample(range(1,money),num-1)  #因为最少抢到一分,所以在1和money之间随机取num-1个数,得到的是一个列表
        hongbao.sort()  #将这这个列表从小到大排序
        hongbao.insert(0,0)  #将0添加到列表的首位
        hongbao.append(money)  #将money添加到列表的末尾
        for i in range(len(hongbao)-1):  #循环这个列表(len(hongbao)-1)
            yield  (hongbao[i+1] - hongbao[i])/100  #把每个钱数存在一个生成器中
    ret = hong_bao(100,10)
    for i in ret:  #这样有一个人抢红包就把钱数给出来
        print(i)
    # 29.66
    # 2.71
    # 11.1
    # 7.92
    # 7.07
    # 11.38
    # 17.15
    # 5.58
    # 2.65
    # 4.78
  • 相关阅读:
    CCF模拟题 窗口
    CSUOJ 1541 There is No Alternative
    MySQL数据库优化的八种方式(经典必看)
    PHP面向对象-----魔术方法
    PHP面向对象(OOP)----分页类
    2017最新PHP初级经典面试题目汇总(下篇)
    2017最新PHP经典面试题目汇总(上篇)
    原型模式
    适配器模式
    策略模式
  • 原文地址:https://www.cnblogs.com/qq849784670/p/9519188.html
Copyright © 2011-2022 走看看