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

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程