1. 前言
Python是一种高级编程语言,可以应用于各种领域,如人工智能、数据分析、Web开发等。Python的随机模块random提供了22种函数,可以让开发者轻松实现随机数生成,以及一些与随机数生成有关的功能。本篇文章将介绍random模块中的22种函数。
2. 随机整数生成
2.1 randint()
randint(a, b)
函数可以生成一个在指定范围内的随机整数,包括两个端点。其中a、b是整数,且a≤x≤b。
import random
#生成100~200的随机整数
a = random.randint(100,200)
print(a)
运行结果是:186
2.2 randrange()
randrange([start], stop[, step])
函数可以生成一个在指定范围内的随机整数,不包括stop。其中start和step是可选参数,start缺省时默认为0,step缺省时默认为1,可指定步长,即隔几个数取一个数。如果start和step都缺省,则相当于randint(0,stop-1)。
import random
#生成0~100的随机整数
a = random.randrange(0,100)
print(a)
#生成0~10的随机偶数
b = random.randrange(0,10,2)
print(b)
运行结果是:98 0
2.3 getrandbits()
getrandbits(k)
函数可以生成一个k位的随机整数,返回一个非负整数。
import random
#生成一个8位的随机整数(范围是0~255)
a = random.getrandbits(8)
print(a)
运行结果是:118
3. 随机浮点数生成
3.1 random()
random()
函数可以生成一个0到1的随机浮点数。
import random
#生成一个0~1的随机浮点数
a = random.random()
print(a)
运行结果是:0.14641774797509772
3.2 uniform()
uniform(a, b)
函数可以生成一个在指定范围内的随机浮点数,其中a、b是浮点数,且a≤x≤b。
import random
#生成一个2~4的随机浮点数
a = random.uniform(2,4)
print(a)
运行结果是:2.97985162059715
4. 随机序列操作
4.1 choice()
choice(seq)
函数可以从指定的序列中随机选择一个元素,seq可以是列表、元组或字符串。
import random
#从元组中随机选择一个元素
a = random.choice(('apple','banana','cherry'))
print(a)
#从字符串中随机选择一个字符
b = random.choice('abcde')
print(b)
运行结果是:cherry e
4.2 shuffle()
shuffle(seq)
函数可以将指定的序列中的元素随机打乱,seq可以是列表。
import random
#打乱列表中的元素
a = [1,2,3,4,5]
random.shuffle(a)
print(a)
运行结果是:[2, 4, 5, 1, 3]
4.3 sample()
sample(population, k)
函数可以从指定的序列(population)中,随机选择k个元素,返回列表类型。
import random
#从序列中随机选择3个元素
a = [1,2,3,4,5]
b = random.sample(a,3)
print(b)
运行结果是:[5, 3, 2]
5. 概率分布
5.1 random()
random()
函数可以生成一个0到1的随机数,可用于实现概率分布。
例如,我们可以使用random()函数来模拟投掷一枚硬币,判断正反面的概率:
import random
#模拟投掷一枚硬币
if random.random() < 0.5:
print('正面')
else:
print('反面')
运行结果可能是:反面
5.2 uniform()
uniform(a, b)
函数可以生成一个在指定范围内的随机浮点数,可用于实现概率分布。
例如,我们可以使用uniform()函数来模拟投掷一枚骰子,判断点数的概率:
import random
#模拟投掷一枚骰子
a = random.uniform(1,7)
if a <= 1.5:
print('点数为1')
elif a <= 2.5:
print('点数为2')
elif a <= 3.5:
print('点数为3')
elif a <= 4.5:
print('点数为4')
elif a <= 5.5:
print('点数为5')
else:
print('点数为6')
运行结果可能是:点数为3
5.3 gauss()
gauss(mu, sigma)
函数可以生成一个服从高斯(正态)分布的随机数,其中mu是均值,sigma是标准差。
import random
#生成一个服从高斯分布的随机数
a = random.gauss(0,1)
print(a)
运行结果可能是:0.21277952864204598
6. 种子生成
6.1 seed()
seed(a=None)
函数用于生成随机序列,a是种子参数,如果不指定a,则使用系统时间作为种子。
在同一种子下,使用随机函数生成的随机数序列是相同的。
import random
#使用种子生成随机序列
random.seed(100)
a = random.random()
b = random.random()
random.seed(100)
c = random.random()
d = random.random()
print(a,b)
print(c,d)
运行结果是:0.1456692551041303 0.45472190799747655
注意:不同的种子生成的随机序列不同,但同一种子下生成的随机序列是相同的。
7. 总结
Python的随机模块random提供了22种函数,能够方便地实现随机数生成和一些与随机数生成相关的功能。这些函数可以分为随机整数、随机浮点数、随机序列操作、概率分布、种子生成等五个方面。
随机模块random不仅在科学计算和模拟中有所应用,在Python编程的学习中也有重要的作用。
当需要产生一个随机数时,可以根据具体的需求来选择相应的函数,比如需要生成随机整数可使用randint()函数,需要给列表随机排序可使用shuffle()函数,需要模拟概率分布可使用uniform()函数等。
同时,随机数的产生受到种子的影响,种子相同则随机序列相同,种子不同则随机序列不同。