简介
random常用于随机几率应用,一个不难但非常重要的模块。
random是什么?
该模块为各种分布实现伪随机数生成器。
对于整数,有一个范围内的统一选择。
对于序列,可以统一选择一个随机元素,可以生成就地列表的随机排列的函数,还可以进行无需替换的随机采样。
常用方法
使用示例
import random
print(random.random())
print(random.randint(3,9))
print(random.randrange(1,17,3))
print(random.choice([1,2,3]))
print(random.sample([1,2,3,"ac","bd",[1,"gf"]],3))
方法简介
- random.random()
返回范围为[0.0,1.0)的下一个随机浮点数。 - random.randint(a, b)
返回一个随机整数N,使a <= N <= b - random.choice(seq)
从非空序列seq返回一个随机元素。 - random.sample(population, k)
返回一个新列表,结果列表按选择顺序排列,所有子切片也将是有效的随机样本。
其他方法:
random.expovariate(lambd )
指数分布。 lambd为1.0除以所需的均值。它应该不为零。(该参数将被称为“拉姆达”,但是这是在Python保留字。)返回值的范围从0到正无穷大如果lambd为正,且从负无穷大到0,如果lambd为负。
random.gammavariate(alpha,beta )
伽玛分布。(不是伽马函数!)参数的条件是和。alpha > 0beta > 0
random.gauss(mu,sigma )
高斯分布。 mu是平均值,而sigma是标准偏差。这比normalvariate()下面定义的功能要快一些。
random.lognormvariate(mu,sigma )
记录正态分布。如果采用该分布的自然对数,则将获得均值mu和标准偏差sigma的正态分布。 mu可以具有任何值,并且sigma必须大于零。
random.normalvariate(mu,sigma )
正态分布。 mu是平均值,而sigma是标准偏差。
random.vonmisesvariate(mu,kappa )
mu是平均角度,以0到2 * pi之间的弧度表示,而kappa 是浓度参数,必须大于或等于零。如果 kappa等于零,则此分布在0到2 * pi的范围内减小到均匀的随机角度。
random.paretovariate(alpha )
帕累托分布。 alpha是shape参数。
random.weibullvariate(alpha,beta )
威布尔分布。 alpha是比例参数,beta是形状参数。
练习
随机抽牌
假设我们有一副扑克牌,将随机抽取一张扑克牌
import random
#生成一副牌
color_card =["黑桃","红桃","梅花","方片"]
card_n=["A",2,3,4,5,6,7,8,9,10,"J","Q","K"]
Playing_CARDS=[]
for i in color_card:
for x in card_n:
Playing_CARDS.append(i+str(x))
n=0
# print(Playing_CARDS)
for y in range(len(Playing_CARDS)):
print(y,">",Playing_CARDS[y],end="\t")
n+=1
if n==13:
print()
n=0
print("牌数量:",len(Playing_CARDS),type(len(Playing_CARDS)))
# 用列表索引随机抽取
choice_P1=random.randint(0,len(Playing_CARDS))
print("此次抽取到了:",Playing_CARDS[choice_P1])
#使用choice随机抽取一张牌
choice_P=random.choice(Playing_CARDS)
print("此次抽取到了:",choice_P)
#使用sample随机抽取三张牌
choice_P=random.sample(Playing_CARDS,3)
print("此次抽取到了:",choice_P)
三次抽取结果
可以看到,使用不同的方法进行抽取,效果一致。
总结
random还有些使用方法,常用的基本都在这里了。在遇到随机抽取的情况时我们可以考虑使用。