Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成无重复数字的随机数_Python - Fatal编程技术网

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