一、随机模块 random
random模块是用于模拟或生成随机输出的模块。
详见官方文档(英文):https://docs.python.org/3/library/random.html
二、random模块的用法
import random as R
函数名 | 描述 |
---|---|
R.random() | 返回一个[0, 1) 之间的随机实数 |
R.uniform(a,b) | 返回[a,b) 区间内的随机实数 |
R.randrange([start,] stop[, step]) | 返回range(start,stop,step)中的随机数 |
R.choice(seq) | 从序列中返回随意元素 |
R.shuffle(seq[, random]) | 随机指定序列的顺序(乱序序列) |
R.sample(seq,n) | 从序列中选择n个随机且不重复的元素 |
R.getrandbits(nbit) | 以长整型的形式返回用nbit位来表示的随机数 |
R.seed(a=None) | 用给定的数a设置随机种子,不给参数a则用当前时间设置随机种子 |
三、示例
第一题
假设可以作为密码的字符有:A-Z、a-z、0-9、下划线;
写一个程序,随机生成六位密码
import random
a = [x for x in range(0,10)]
b = [chr(x) for x in range(ord('a'),ord('z')+1)]
c = [chr(x) for x in range(ord('A'),ord('Z')+1)]
L = a+b+c
passwd = ''.join(random.sample(L,6))
print(passwd)
第二题
模拟斗地主发牌,扑克共53张:
花色:
黑桃(‘\u2660’)梅花(‘\u2663’)
方块(‘\u2665’)红桃(‘\u2666’)
数值:
A2-10JQK
大小王
三个人,没人发17张牌,底牌三张;
输入回车,打印第1个人的17张牌
输入回车,打印第2个人的17张牌
输入回车,打印第3个人的17张牌
再输入回车,打印出三张底牌
L = ['A'] + [str(x) for x in range(2, 11)] + list("JQK")
# print(L)
kinds = ['\u2660', '\u2663', '\u2665','\u2666']
# print(kinds)
poke = ['大王', '小王']
for k in kinds:
for n in L:
poke.append(k + n)
print("新买的牌:", poke)
poke2 = list(poke) # 复制一份
import random
random.shuffle(poke2) # 洗牌
input()
print("第1个人的17张牌是:", poke2[:17])
input()
print("第2个人的17张牌是:", poke2[17:34])
input()
print("第3个人的17张牌是:", poke2[34:51])
input()
print("底牌是:", poke2[51:])