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

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

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

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

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

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

  • 使用random.choices()方法

阅读更多:Python 教程

使用randint()和append()函数

算法(步骤)

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

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

  • 创建一个空列表,这是生成随机数的结果列表。

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

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

  • 使用if条件语句,并使用not和in操作符检查生成的随机数是否不在结果随机列表中。

  • 如果条件为真,则使用append()函数(将元素添加到列表末尾)将随机数附加到结果列表。

  • 打印生成的随机数列表。

示例

以下程序返回不重复的随机数,使用randint()和append()函数:

# 导入random模块
import random
# 结果随机数列表
randomList=[]
# 遍历循环15次
for i in range(15):
   # 生成1到100范围内的随机数
   r=random.randint(1,100)
   # 检查生成的随机数是否不在randomList中
   if r not in randomList:
      # 如果条件为真,则将随机数附加到结果列表
      randomList.append(r)
# 打印生成的随机数列表
print("不重复的随机数是:" )
print(randomList)
Python

输出

执行以上程序,将生成以下输出:

不重复的随机数是:
[84, 86, 90, 94, 59, 33, 58, 36, 62, 50, 26, 38, 4, 89]
Python

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

random.sample()方法返回一个包含从序列中随机选择的元素数的列表。

语法

random.sample(sequence, k)
Python

参数

  • sequence(必需) − 任何序列,如列表、元组等。

k(可选) −返回列表的长度,作为整数。

算法(步骤)

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

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

  • 创建一个变量来存储输入列表。

  • 使用set()函数(返回可迭代对象的所有不同项并将可迭代对象转换为集合),从输入列表中删除重复的元素。

  • 使用list()函数(将序列/可迭代对象转换为列表)将上述集合转换为列表。现在列表仅包含唯一元素。

  • 通过将包含唯一项的列表和k值作为参数传递给sample()函数打印从列表中随机选择的k(这里是4)个不重复的数字。

示例

以下程序使用random.sample()函数返回4个非重复的随机数:

# 导入random模块
import random
# 输入列表
inputList = [1, 2, 3, 1, 4, 3, 5, 7, 9, 8, 2, 3]
# 使用set()函数从列表中删除重复元素
resultSet=set(inputList)
# 将集合转换为列表(现在列表仅包含唯一元素)
uniqueList =list(resultSet)
# 从不重复的列表中选择4个随机数并打印它们
print("4 non-repeating random numbers from the list are:")
print(random.sample(uniqueList, 4))
Python

输出

执行上述程序将生成以下输出:

4 non-repeating random numbers from the list are:
[7, 2, 4, 8]
Python

范围内使用random.sample()方法的随机数

算法(步骤)

按照以下步骤执行所需任务的算法:

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

  • 使用range()函数获取指定范围内的数字,即1到100(range()函数返回从0开始以1(默认值)递增,并在给定数字之前停止的数字序列)。

  • 通过将给定范围的数字列表和k值作为参数传递给sample()函数,从列表中随机选择k(这里是4)个不重复的数字并打印它们。

示例

以下程序使用random.sample()函数返回4个非重复的随机数:

# 导入random模块
import random
# 获取0到100的数字
inputNumbers =range(0,100)
# 使用sample()函数从给定范围的数字中选择4个非重复的随机数并打印它们
print("4 non-repeating random numbers are:")
print(random.sample(inputNumbers, 4))
Python

输出

执行上述程序后,将生成以下输出−

4个不重复的随机数为:
[67506147]
Python

使用random.choices()方法

random模块包含 random.choices() 方法。它很有用,可以从列表中选择多个项或从特定序列中选择单个项。

语法

random.choices(sequence, k)
Python

参数

  • sequence(必需) − 任何序列,如列表,元组等

  • k(可选) − 作为整数返回列表的长度

示例

以下程序使用random.choices()函数返回 4 个不重复的随机数−

#导入random模块
import random
#获取0到100之间的数字
inputNumbers =range(0,100)
#打印4个从给定数字范围内的随机数字,这些数字是不重复的,使用choices()函数
print("4个不重复的随机数为:")
print(random.choices(inputNumbers, k=4))
Python

输出

执行上述程序后,将生成以下输出−

4个不重复的随机数为:
[71, 4, 12, 21]
Python

结论

在本教程中,我们学习了如何使用四种不同的方法在Python中生成不重复的数字。我们学习了如何生成不在列表中的不重复数字。我们学习了如何确定是否包含一个元素在列表中,以生成不重复的整数。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册