长期更新
import random
用于生成一个0到1的随机浮点数: 0 <= n < 1.0
list1 = [random.random() for i in range(5)]
print(list1)
[0.9271152577610227, 0.7006174506049112, 0.5127977465367721, 0.2895395046880833, 0.8221562682396618]
用于设定种子值,其中的n可以是任意数字。
random.random() 生成随机数时,每一次生成的数都是随机的。
但是,使用 random.seed(n) 设定好种子之后,在先调用seed(n)时,使用 random() 生成的随机数将会是同一个。(保证每次运行的随机结果一样)
random.seed(10)
list1 = [random.random() for i in range(5)]
print(list1)random.seed(11)
list1 = [random.random() for i in range(5)]
print(list1)random.seed(10)
list1 = [random.random() for i in range(5)]
print(list1)random.seed(10) # 没执行一次random之前都要设置随机数种子
list1 = [random.random() for i in range(5)]
print(list1)# 未设置随机数种子 立刻不一样了
list1 = [random.random() for i in range(5)]
print(list1)
返回a,b之间的均匀分布里随机采样的浮点数,若a<=b则范围[a,b],若a>=b则范围[b,a] ,a和b可以是实数。
list1 = [random.uniform(15,18) for i in range(6)]
print(list1)
[15.398934434136638, 17.30351344183197, 17.94723974703357, 17.908164481214754, 16.839980461640128, 15.132781898593862]
返回a,b之间的整数,范围[a,b],注意:传入参数必须是整数,a一定要比b小。
实测:确实包含右边区间b
list1 = [random.randint(10,20) for i in range(20)]
print(list1)
[17, 19, 12, 14, 13, 11, 12, 13, 17, 16, 14, 11, 15, 12, 19, 20, 20, 11, 19, 10]
返回前闭后开区间[start,stop)内的整数,可以设置step。只能传入整数。
list1 = [random.randrange(0,100,2) for i in range(20)] # [0,100) 内的偶数(步长为2嘛)
print(list1)
[20, 82, 80, 14, 22, 0, 76, 50, 18, 98, 72, 20, 24, 20, 2, 84, 30, 56, 80, 48]
list1 = [random.randrange(0,100) for i in range(20)] # [0,100) 内的数(步长默认为1)
print(list1)
[7, 86, 74, 41, 21, 6, 96, 35, 90, 89, 15, 91, 6, 76, 28, 39, 67, 79, 27, 83]
list1 = [random.randrange(100) for i in range(20)] # [0,100) 内的数 (start默认0、step都默认1)
print(list1)
[12, 4, 17, 27, 82, 11, 15, 32, 8, 88, 93, 51, 4, 69, 54, 60, 57, 43, 89, 58]
从sequence(序列,列表、元组和字符串)中随机获取一个元素。
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]list2 = [random.choice(list1) for i in range(10)] # 每次list1中随机取一个数 共取10次
print(list2)
[8, 9, 1, 0, 17, 9, 7, 12, 0, 2]
从sequence(序列,列表、元组和字符串)中随机获取k个元素,可能重复,k用参数名传值,k省略则默认取1个,返回list。
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]list2 = random.choices(list1,k=10) # 直接从list1中随机获取10个元素 可能重复
print(list2)list2 = random.choices(list1,k=10) # 直接从list1中随机获取10个元素 可能重复
print(list2)
[7, 3, 2, 3, 9, 7, 8, 15, 14, 10]
[3, 4, 0, 15, 5, 9, 18, 18, 8, 0]
用于将列表中的元素打乱顺序,俗称为洗牌。
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
random.shuffle(list1)
print(list1)
[8, 19, 0, 6, 14, 2, 12, 1, 5, 16, 15, 7, 11, 13, 4, 17, 18, 9, 3, 10]
从指定序列中随机获取k个不重复元素作为一个列表返回, sample函数不会修改原有序列。
list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
list2 = random.sample(list1,10) # list1中随机选取10个不重复的数
print(list2)
[0, 6, 16, 5, 15, 11, 9, 10, 19, 8]