Python 生成无重复数字的随机数
我想让循环从随机生成器生成,没有重复值,如下所示:Python 生成无重复数字的随机数,python,Python,我想让循环从随机生成器生成,没有重复值,如下所示: 1,4 1,2 1,3 1,1 1,7 1,9 1,8 2,5 2,2 2,1 2,3 2,4 2,5 2,7 我的意思是,对于每个第一个值,第二个值上没有重复的值。第二个值的值范围为(1到10) 下面的代码仍然提供重复的值: import random for i in range(2): for j in range(7): print(i, ',', random.randint(1,10)) 关于如何解决这个
1,4
1,2
1,3
1,1
1,7
1,9
1,8
2,5
2,2
2,1
2,3
2,4
2,5
2,7
我的意思是,对于每个第一个值,第二个值上没有重复的值。第二个值的值范围为(1到10)
下面的代码仍然提供重复的值:
import random
for i in range(2):
for j in range(7):
print(i, ',', random.randint(1,10))
关于如何解决这个问题有什么想法吗?
非常感谢您的回复。我建议创建一个空数组,如果不在数组中,则添加数字,否则传递
import random
for i in range(2):
j = 0
nums = []
while j != 7:
num = random.randint(1,10)
if num not in nums:
print(i+1, ',', num)
nums.append(num)
j+=1
像这样:
import random
my_numbers = []
for i in range(5):
x = random.randint(0,19)
if x not in my_numbers:
my_numbers.append(x)
else:
pass
只需使用从总体生成非重复随机元素的内置方式:
from random import sample
for i in range(1, 3):
for j in sample(list(range(1, 11)), 7):
print(i, ',', j)
# 7 random non-repeating `j` from [1, 2, ..., 10]
要从整个可能对池中采样14个随机元素,您可以将其与:
生成产品列表,然后将其洗牌。它将在元组中包含唯一的值
from itertools import product
from random import shuffle
my_list= list((i,j) for i,j in product([1,2],range(1,10)) if i!=j)
shuffle(my_list)
print(my_list[:14]) # just pick random 14 pairs which are not duplicate
更正代码以检查重复项。虽然运营成本很高
import random
intial_range=range(2)
for i in intial_range:
count=0
while count<7:
temp = random.randint(1,10)
if(temp not in intial_range):
print(i, ',', temp)
count+=1
随机导入
初始范围=范围(2)
对于初始_范围内的i:
计数=0
当countWell时,您在代码中的什么地方做任何事情来检查是否存在重复项?你知道你的代码是错的,但你在哪里尝试过过滤重复的代码?我不知道如何检查是否有重复的代码, cheers@JONPANTAU您希望第一列中的值对于第二列的七个唯一值为1,然后对于七个唯一值为2,对吗?问题不清楚:请编辑它并提供所需内容的更好说明。我可以在第二个位置看到重复的值(1,3
和2,3
)。这是否意味着您实际上不希望整个元组重复(因此1,3
和2,3
是不同的2元组)或第一个位置的给定值在第二个位置不重复(即,只有一个1,3
),或者其他什么?请不要只提供一段代码:解释代码如何回答问题。如果问题是不适定的(在本例中,首先要求改进注释-否则,您可能回答的问题与OP的意图不同)。这不是一段精彩的代码。您应该使用集合
而不是列表
,它用分隔数字,“
而不是”,“
,神奇的数字比比皆是。。。这不是一个没有解释的好例子,即使有一个tbh也不好。但这确实需要一个解释。
import random
intial_range=range(2)
for i in intial_range:
count=0
while count<7:
temp = random.randint(1,10)
if(temp not in intial_range):
print(i, ',', temp)
count+=1