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)

 

posted @ 2018-08-20 16:46  YaoSir66  阅读(135)  评论(0编辑  收藏  举报