如何在 Python 中生成不重复的随机数?
在这篇文章中,我们将向您展示如何在 Python 中生成不重复的随机数。以下是完成此任务的方法
使用 randint() 和 append() 函数
使用给定列表的 random.sample() 方法
使用数字范围的 random.sample() 方法
使用 random.choices() 方法
使用 randint() 和 append() 函数
算法(步骤)
以下是执行所需任务的算法/步骤:
使用 import 关键字导入 random 模块。
创建一个空列表,作为结果随机数列表。
使用 for 循环 遍历循环 15 次。
使用 random 模块的 randint() 函数(在指定范围内返回一个随机数),在指定范围内生成一个随机数,即从 1 到 100。
使用 if 条件语句 检查生成的随机数是否不在结果 randomList 中,使用 not 和 in 运算符 (Python 成员运算符)。
如果条件为 True,则使用 append() 函数(在列表末尾添加元素)将随机数追加到结果列表。
打印结果 随机数列表
示例
以下程序使用 randint()、append() 函数返回不重复的随机数:
# importing random module import random # resultant random numbers list randomList=[] # traversing the loop 15 times for i in range(15): # generating a random number in the range 1 to 100 r=random.randint(1,100) # checking whether the generated random number is not in the # randomList if r not in randomList: # appending the random number to the resultant list, if the condition is true randomList.append(r) # printing the resultant random numbers list print("non-repeating random numbers are:") print(randomList)
输出
执行上述程序后,将生成以下输出:
non-repeating random numbers are: [84, 86, 90, 94, 59, 33, 58, 36, 62, 50, 26, 38, 4, 89]
使用给定列表的 random.sample() 方法
random.sample() 方法返回一个列表,其中包含从序列中随机选择的指定数量的元素。
语法
random.sample(sequence, k)
参数
sequence(必需) - 任何序列,如列表、元组等
k(可选) - 返回列表的长度,表示为整数
算法(步骤)
以下是执行所需任务的算法/步骤:
使用 import 关键字导入 random 模块。
创建一个变量来存储输入列表。
使用 set() 函数(返回可迭代对象中所有不同的项,并将可迭代对象转换为集合),从输入列表中删除重复的元素。
使用 list() 函数(将序列/可迭代对象转换为列表),将上述集合转换为列表。现在列表中只有唯一元素。
通过将包含唯一项的列表和 k 值作为参数传递给 sample() 函数,打印列表中 k(此处为 4)个不重复的随机数。
示例
以下程序使用 random.sample() 函数返回 4 个不重复的随机数:
# importing random module import random # input list inputList = [1, 2, 3, 1, 4, 3, 5, 7, 9, 8, 2, 3] # removing repeating elements from the list using the set() function resultSet=set(inputList) # converting the set into a list(now the list has only unique elements) uniqueList =list(resultSet) # printing 4 random numbers from the list which is non-repeating print("4 non-repeating random numbers from the list are:") print(random.sample(uniqueList, 4))
输出
执行上述程序后,将生成以下输出:
4 non-repeating random numbers from the list are: [7, 2, 4, 8]
使用数字范围的 random.sample() 方法
算法(步骤)
以下是执行所需任务的算法/步骤:
使用 import 关键字导入 random 模块。
使用 range() 函数(range() 函数返回一个从 0 开始,增量为 1(默认)并在给定数字之前停止的数字序列)获取指定范围内的数字,例如,此处为 1 到 100。
通过将给定的数字范围列表和 k 值作为参数传递给 sample() 函数,打印列表中 k(此处为 4)个不重复的随机数。
示例
以下程序使用 random.sample() 函数返回 4 个不重复的随机数:
# importing random module import random # getting numbers from 0 to 100 inputNumbers =range(0,100) # printing 4 random numbers from the given range of numbers which are # non-repeating using sample() function print("4 non-repeating random numbers are:") print(random.sample(inputNumbers, 4))
输出
执行上述程序后,将生成以下输出:
4 non-repeating random numbers are: [67, 50, 61, 47]
使用 random.choices() 方法
random 模块包含 random.choices() 方法。它可用于从列表中选择多个项或从特定序列中选择单个项。
语法
random.choices(sequence, k)
参数
示例
以下程序使用 random.choices() 函数返回 4 个不重复的随机数:
# importing random module import random # getting numbers from 0 to 100 inputNumbers =range(0,100) # printing 4 random numbers from the given range of numbers which are # non-repeating using choices() function print("4 non-repeating random numbers are:") print(random.choices(inputNumbers, k=4))
输出
执行上述程序后,将生成以下输出:
4 non-repeating random numbers are: [71, 4, 12, 21]
结论
在本教程中,我们学习了如何使用四种不同的方法在 Python 中生成不重复的数字。我们学习了如何生成不在列表中的不重复数字。我们学习了如何确定元素是否包含在列表中,以便生成不重复的整数。