Python - N 个随机元组列表
有时,在处理Python记录时,我们可能会遇到需要构建随机元组列表的问题。这可以在使用游戏和日常编程的许多领域中应用。让我们讨论可以执行此任务的某些方式。
Input :
N = 4
R = 6
Output : [(5, 6), (1, 0), (1, 3), (2, 3)]
Input :
N = 8
R = 4
Output : [(2, 3), (4, 1), (2, 0), (4, 3), (4, 2), (0, 2), (1, 4), (0, 1)]
方法 #1:使用列表理解 + sample()
这是可以执行此任务的方式之一。在这种情况下,使用 sample() 生成随机数,当给定数字池时,它会提取随机数以形成对,这些对使用列表理解进行配对。
# Python3 code to demonstrate working of
# N Random Tuples list
# Using list comprehension + sample()
import random
# initializing N
N = 5
# initializing Tuple element range
R = 10
# N Random Tuples list
# Using list comprehension + sample()
res = [divmod(ele, R + 1) for ele in random.sample(range((R + 1) * (R + 1)), N)]
# printing result
print("The N random tuples : " + str(res))
输出 :
The N random tuples : [(2, 5), (6, 10), (4, 7), (10, 2), (2, 2)]
方法 #2:使用product() + sample()
上述功能的组合可以用来解决这个问题。在此,我们使用 product() 执行在一个范围内生成数字的任务,并且 sample() 用于从中提取 N 个随机数。
# Python3 code to demonstrate working of
# N Random Tuples list
# Using product() + sample()
import random
import itertools
# initializing N
N = 5
# initializing Tuple element range
R = 10
# N Random Tuples list
# Using product() + sample()
res = random.sample(list(itertools.product(range(R + 1), repeat = 2)), N)
# printing result
print("The N random tuples : " + str(res))
输出 :
The N random tuples : [(2, 5), (6, 10), (4, 7), (10, 2), (2, 2)]