Python随机数random不要重复
介绍
在编程中,经常会用到随机数来模拟真实世界的随机性或者进行随机选择。Python内置的random库提供了生成随机数的函数,但有时我们需要确保生成的随机数不重复,以避免重复使用同一个随机数导致结果的不准确性。本文将介绍如何使用Python的随机数模块random生成不重复的随机数。
随机数生成器
Python的随机数模块random提供了多种生成随机数的函数。其中,常用的有random()
、randint(a, b)
和choice(sequence)
。
random()
函数生成一个[0, 1)范围内的随机浮点数。randint(a, b)
函数生成一个[a, b]范围内的随机整数。choice(sequence)
函数从给定的序列中随机选择一个元素。
这些函数在需要随机数时非常有用,但如果需要生成多个不重复的随机数,上述函数并不能满足需求。
随机数种子
为了生成不重复的随机数,我们需要设置随机数的种子。种子是一个整数,当种子相同时,生成的随机数序列也会相同。通过调用seed(x)
函数,可以设置随机数种子为x。
下面是一个使用种子生成随机数的示例:
import random
random.seed(42)
print(random.random())
print(random.randint(1, 10))
print(random.choice(['apple', 'banana', 'orange']))
输出结果:
0.6394267984578837
6
orange
当种子设置为42时,每次运行上述代码,输出的随机数序列都是相同的。
生成不重复的随机数序列
要生成不重复的随机数序列,我们可以使用sample(population, k)
函数。该函数从给定的序列中随机选择k个元素,并返回一个新的列表。
下面是一个使用sample()
函数生成不重复随机数序列的示例:
import random
random.seed(42)
numbers = range(1, 11)
random_numbers = random.sample(numbers, 5)
print(random_numbers)
输出结果:
[8, 2, 1, 7, 4]
在上述代码中,我们使用range(1, 11)
生成1到10的序列,然后使用sample()
函数从中选择5个随机数。由于设置了种子为42,每次运行代码,生成的随机数序列都是相同的。
生成不重复的随机数序列并打乱顺序
有时候我们需要生成不重复的随机数序列,并且希望每次生成的顺序都不一样。为了实现这个需求,我们可以先生成不重复的随机数序列,然后使用shuffle(sequence)
函数打乱顺序。
下面是一个使用sample()
函数生成不重复随机数序列并打乱顺序的示例:
import random
random.seed(42)
numbers = range(1, 11)
random_numbers = random.sample(numbers, 5)
random.shuffle(random_numbers)
print(random_numbers)
输出结果:
[7, 8, 2, 4, 1]
在上述代码中,我们先使用sample()
函数生成5个不重复的随机数,然后使用shuffle()
函数打乱顺序。由于设置了种子为42,每次运行代码,生成的随机数序列都是相同的,但顺序会不同。
总结
通过使用Python的random模块,我们可以生成不重复的随机数序列。首先,我们需要设置随机数的种子,然后使用sample()
函数从给定的序列中选择不重复的随机数。如果需要每次生成的序列顺序都不同,可以再使用shuffle()
函数打乱顺序。
关系图
erDiagram
RANDOM --|> SAMPLE
RANDOM --|> SHUFFLE