zoukankan      html  css  js  c++  java
  • random模块

    随机小数

    random.random()

    取(0-1)之间的小数

    print(random.random())
    多次运行结果:
    0.7625585812371684
    0.41751820355234404
    0.08773753644629267

    random.uniform(m,n)

    取(m-n)之间的小数

    print(random.uniform(3, 4))
    多次运行结果:
    3.316786336794635
    3.2022091764571763
    3.0448438517470997

    随机整数

    random.randint(m,n)

    随机取m,n之间的整数,包括m以及n

    print(random.randint(1, 3))
    多次运行结果:
    3
    1
    1
    2

    random.randrange(m,n)

    随机取m,n之间的整数,包括m但不包括nm

    print(random.randint(1, 3))
    多次运行结果:
    1
    1
    2
    1

    random.randrange(m,n,k)

    随机在m,n区间内每两个数的数列中取一个整数,同样包括m,但不包括n

    print(random.randrange(1, 4, 2))
    多次运行结果:
    1
    3
    3

    从列表中随机取值:

    random.choice

    从列表中随机取一个值

    lst = ['a', 'b', (1, 2), 123]
    print(random.choice(lst))
    运行结果:
    b
    123

    random.sample(list,n)

    从列表中随机取n个值

    lst = ['a', 'b', (1, 2), 123]
    print(random.sample(lst, 2))
    运行结果:
    ['b', 'a']
    [123, 'b']

    打乱列表顺序

    random.shuffle

    在原列表的基础上修改,节省内存

    生成验证码函数的小练习

    要求可以选择生成验证码的位数以及纯数字或是字母数字的组合形式

    def func(n=4, flag=True):
        '''
        这个函数是用来:随机生成字母数字的验证码
        :param n:验证码的位数,默认为4
        :param flag:当flag为True时输出字母数字组合的验证码,为False时输出出数字,默认为True
        :return:返回的是:验证码的字符串
        '''
        a = ""
        for i in range(n):
            num = random.randint(0, 9)
            if flag:
                alpha_upper = chr(random.randint(65, 90))
                alpha_lower = chr(random.randint(97, 122))
                num = random.choice([num, alpha_lower, alpha_upper])
            a = a+str(num)
        return a

    拼手气红包的练习

    # 版本一,数量越多,出现的极小金额越多
    def func1(num, money):
        '''
        这个函数是用来 手气红包
        :param num:红包个数
        :param money:红包金额
        :return:返回的是 所抢红包金额
        '''
        lst = []
        n = 1
        sum = 0
        for i in range(num-1):
            a = random.randint(1, money*100-(num-n)-sum)
            lst.append(a/100)
            n += 1
            sum += a
        lst.append((money*100-sum)/100)
        print(lst)
        lit = random.sample(lst, num)
        for j in lit:
            return j
    
    print(func1(10, 200))
    
    # 版本二,金额相对平均,与手气相关程度小
    def func2(num, money):
        money = money * 100
        ret = random.sample(range(1, money), num-1)
        ret.sort()
        ret.insert(0, 0)
        ret.append(money)
        for i in range(len(ret) - 1):
            yield (ret[i+1] - ret[i])/100
    
    ret_g = func2(50, 10)
    for money in ret_g:
        print(money)
  • 相关阅读:
    5. 添加后台管理页面
    4. 整合MyBatis
    3. 添加多个控制器
    2. 引入springmvc
    1. 开篇-springboot环境搭建
    去除angularjs路由的显眼的#号
    EasyUI DataGrid 分页实现示例
    等待对话框实现
    使用Struts2搭建登录注册示例
    观察者模式
  • 原文地址:https://www.cnblogs.com/jiaqi-666/p/9506450.html
Copyright © 2011-2022 走看看