如何在 Python 中生成不重复的随机数?


在这篇文章中,我们将向您展示如何在 Python 中生成不重复的随机数。以下是完成此任务的方法

  • 使用 randint() 和 append() 函数

  • 使用给定列表的 random.sample() 方法

  • 使用数字范围的 random.sample() 方法

  • 使用 random.choices() 方法

使用 randint() 和 append() 函数

算法(步骤)

以下是执行所需任务的算法/步骤:

  • 使用 import 关键字导入 random 模块。

  • 创建一个空列表,作为结果随机数列表。

  • 使用 for 循环 遍历循环 15 次。

  • 使用 random 模块的 randint() 函数(在指定范围内返回一个随机数),在指定范围内生成一个随机数,即从 1 到 100。

  • 使用 if 条件语句 检查生成的随机数是否不在结果 randomList 中,使用 notin 运算符 (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)

参数

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

更新于: 2023-08-26

45K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告