2017-04-17 72 views
2

说我有一些随机数0-9。我想找到一种方法来获得值0-9,但我不想重复另一个数字,直到所有其他值都被使用了相同的次数。Python随机数使用新号码之前的唯一号码发生器

Ex。 4,6,5,3,0,1,9,2,7,8,(兰特数,因为我使用了每隔一个数字一次)

有没有任何有效的方法来做到这一点?

回答

4

反复洗牌你想要的号码范围和将它们连接起来:

import random 

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
result = [] 

for i in range(100): 
    random.shuffle(numbers) 
    result.extend(numbers) 

print(result) 

或者:

import random 
import itertools 

def generate_numbers(): 
    numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

    while True: 
     random.shuffle(numbers) 
     yield from numbers 

print(list(itertools.islice(generate_numbers(), 50)))