Python:随机生成器中的双打

Use*_*own 0 python random generator

我试图创建一个生成器,它将寻找1到m范围内的n个随机整数.下面的代码完全相同,但它有时会返回先前打印过的数字的两倍.有谁知道我怎么编辑它?另一件事,但更设计的是,我如何订购我的打印,以便数字有序?

import random

def hwset(m,n):
    i=0
    for i in range(0,n):
        print random.randrange(1,m+1,1)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

如果你想n在1和1之间的所有整数中产生一个数字样本m,请将该random.sample()函数与一个xrange()对象一起使用(range()如果你在Python 3上,则使用它):

def hwset(m, n):
    return random.sample(xrange(1, m + 1), n)
Run Code Online (Sandbox Code Playgroud)

如果您希望对这些数字进行排序,只需对结果进行排序:

sorted_hwset = sorted(hwset(m, n))
Run Code Online (Sandbox Code Playgroud)

演示:

>>> import random
>>> def hwset(m, n):
...     return random.sample(xrange(1, m + 1), n)
... 
>>> hwset(100, 5)
[25, 58, 2, 29, 57]
>>> hwset(100, 5)
[84, 55, 80, 65, 47]
>>> sorted(hwset(100, 5))
[1, 25, 77, 81, 92]
>>> sorted(hwset(100, 5))
[34, 46, 59, 66, 76]
Run Code Online (Sandbox Code Playgroud)