如何在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中生成不重复的数字。我们学习了如何生成不在列表中的不重复数字。我们学习了如何确定元素是否包含在列表中以便生成不重复的整数。