如何在python中生成一个数字在1-x之间的随机样本?

时间:2013-09-13 10:34:38

标签: python random

我正在制作一个类组计算器并且一直在尝试生成random.sample(range(1,16), classNumber)但是当我运行代码时,它似乎仍然包含样本中的数字0。

这是我的代码:

import random

classNumber = int(input('Please enter the number of people in your class:'))
groupNumber = int(input('Please enter the number of groups:'))

sum1 = classNumber // groupNumber

if (sum1 * groupNumber) == classNumber:
    for i in range(1,sum1+1):
        print (groupNumber)
    random.seed(1)
    sample = random.sample(range(classNumber+1), classNumber+1)
    print (sample)
    count = 0
    for i in range(1,classNumber+1):
        count += 1
        print(i,'- ',sample[count])
else:
    numbersInGroup = classNumber - (groupNumber * sum1)
    for i in range(1,sum1+1):
        print(groupNumber)
    print(numbersInGroup)

即使这样也会返回错误。

import random
s = random.sample(range(1,16),16)
print (s)

3 个答案:

答案 0 :(得分:0)

sample = random.sample(range(classNumber+1), classNumber+1)

这是你的问题。这个样本毫无意义。首先,你没有在范围上设置下限,所以它默认为0而不是1.其次,如果你只是增加下限,你将尝试从范围中绘制的数字超过实际范围内的数字。 。您的代码中没有任何部分显示random.sample(range(1,16), classNumber)。是这条线应该说的吗?

答案 1 :(得分:0)

范围函数至少需要两个参数,即起始值(第一个值)和停止值(第二个值)。停止值不是最后一个输出值,而是值是函数停止返回值。 范围(1,3)将给你1,2,所以你的函数必须是范围(第一个值,最后一个值+ 1) http://docs.python.org/2/library/functions.html#range

答案 2 :(得分:0)

您可以使用numpy模块:

import numpy as np

np.random.randint(1,16,6)

这里,关于包容性和独占随机数组: http://docs.scipy.org/doc/numpy/reference/routines.random.html