Python:在随机生成器中加倍

Python:在随机生成器中加倍,python,random,generator,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) 如果要从1到m之间的所有整数中生成一个n数的示例,请将与xrange

我正在尝试创建一个生成器,它将查找1到m范围内的n个随机整数。下面的代码正是这样做的,但是它有时会返回先前打印的数字的两倍。有人知道我怎么编辑吗?另一件事,但它是更明智的设计是,我怎样才能秩序我的打印出来,使数字是有序的

import random

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

如果要从1到
m
之间的所有整数中生成一个
n
数的示例,请将与
xrange()
对象一起使用(如果使用的是Python 3,请使用
range()
):

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

sorted_hwset = sorted(hwset(m, n))
演示:


如果要从1到
m
之间的所有整数中生成一个
n
数的示例,请将与
xrange()
对象一起使用(如果使用的是Python 3,请使用
range()
):

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

sorted_hwset = sorted(hwset(m, n))
演示:


你是说你重复了数字?你是在试着制作一个样本吗?是的,这是一个更好的描述方式。什么是样本?样本是从总体中抽取的特定样本。1到m是总体,您从中提取了n个图形,没有替换。@UsernameUnknown:它是从更大的集合中选择的,随机选取,不重复。请注意,您的函数不是生成器函数;您可以使用一个常规函数来打印值。你真的需要发电机吗?从更大的样本集中选取样本并不适合生成器方法。你的意思是你重复了数字?你是在试着制作一个样本吗?是的,这是一个更好的描述方式。什么是样本?样本是从总体中抽取的特定样本。1到m是总体,您从中提取了n个图形,没有替换。@UsernameUnknown:它是从更大的集合中选择的,随机选取,不重复。请注意,您的函数不是生成器函数;您可以使用一个常规函数来打印值。你真的需要发电机吗?从更大的样本集中选取样本并不真正适合生成器方法。完善我的功能现在可以工作了,但我无法进行排序work@UsernameUnknown:定义不工作,在这里?你的意思是你有一个不有序的序列?是的,我没有一个有序的序列ordered@UsernameUnknown:我添加了一个小演示
sorted()
按排序顺序返回新列表。您也可以使用
result=hwset(m,n)
然后调用
result.sort()
对结果列表进行就地排序。完美我的函数现在可以工作了,但我无法实现排序work@UsernameUnknown:定义不工作,在这里?你的意思是你有一个不有序的序列?是的,我没有一个有序的序列ordered@UsernameUnknown:我添加了一个小演示
sorted()
按排序顺序返回新列表。您还可以使用
result=hwset(m,n)
然后调用
result.sort()
对结果列表进行适当排序。
>>> 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]