1

我正在制作一个班级组计算器,并且一直在尝试生成一个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)
4

3 回答 3

1

您可以使用 numpy 模块:

import numpy as np

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

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

于 2013-09-13T12:46:42.763 回答
0

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

于 2013-09-13T12:31:05.993 回答
0
sample = random.sample(range(classNumber+1), classNumber+1)

这是你的问题。这个样本没有意义。首先,您没有设置范围的下限,因此它默认为 0 而不是 1。其次,如果您只是增加下限,您将尝试从范围中提取比实际范围更多的数字. 您的代码中没有任何部分说random.sample(range(1,16), classNumber). 这就是这条线应该说的吗?

于 2013-09-13T10:42:33.277 回答