如何在Python中生成不重复的随机数?
在本文中,我们将演示如何在Python中生成不重复的随机数。以下是实现这个任务的方法:
- 使用randint()和append()函数
-
使用给定列表的random.sample()方法
-
使用一系列数字的random.sample()方法
-
使用random.choices()方法
使用randint()和append()函数
算法(步骤)
以下是执行所需任务的算法/步骤:
- 使用import关键字导入random模块。
-
创建一个空列表作为结果随机数列表。
-
使用for循环遍历循环15次。
-
使用随机模块的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)
参数
- 序列(必需) - 任何类似于列表、元组等的序列
-
k(可选) - 作为整数返回列表的长度
算法(步骤)
以下是执行所需任务的算法/步骤:
- 使用import关键字导入random模块。
-
创建一个变量来存储输入列表。
-
使用set()函数(从可迭代对象中返回所有不重复的元素并将可迭代对象转换为集合),从输入列表中去除重复的元素。
-
使用list()函数(将序列/可迭代对象转换为列表),将以上集合转换为列表。现在列表只包含唯一的元素。
-
通过将包含唯一元素的列表、k(这里是4)作为参数传递给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() 函数获取指定范围内的数字,即此处为1到100(range()函数返回从0开始以1(默认)递增并在给定数字之前停止的数字序列)。
-
通过将给定的数字范围列表和 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)
参数
- 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中生成不重复的数字。我们学习了如何生成不在列表中的不重复数字。我们学习了如何确定一个元素是否包含在列表中,以生成不重复的整数。