从范围中选择randint

时间:2015-07-30 05:23:42

标签: python

from random import randint
number_of_trials = 100
range_of_random_numbers = 1000
for each in number_of_trials:
    print randint(range(range_of_random_numbers))

我是python的初学者。当我尝试运行上面的代码时,我收到错误:

  

TypeError:' int'对象不可迭代

我试图从一个范围(在range_of_numbers中定义)中获取一个随机数来打印一定次数(在number_of_trials中定义)。请帮忙,我做错了什么?

4 个答案:

答案 0 :(得分:2)

使用range创建一个可迭代的列表(如果你使用的是Python 2.x),它将用于迭代。

你需要将两个整数传递给random.randint,而不是一个可整合的(或列表):

from random import randint

number_of_trials = 100
range_of_random_numbers = 1000
for each in range(number_of_trials):
    print randint(0, range_of_random_numbers)

答案 1 :(得分:1)

我认为您想要使用的是选择。

from random import choice

然后改变

print randint(range(range_of_random_numbers))

print choice(range(range_of_random_numbers))

选择函数将从非空序列中随机选取一个元素。

答案 2 :(得分:0)

代码中有一个问题和一个建议 -

  1. 你正在做 - for each in number_of_trails: - 这是错误的,你试图迭代一个整数,你应该这样做 - for each in range(number_of_trails):

  2. 这里最好用的是random.choice()(而不是randint())。特别是如果range_of_random_numbers不连续。

  3. 示例 -

    from random import choice
    number_of_trials = 100
    range_of_random_numbers = 1000
    for each in range(number_of_trials):
        print choice(range(range_of_random_numbers))
    

    来自documentation of random.choice() -

      

    从非空序列seq中返回一个随机元素。

答案 3 :(得分:0)

应该是

from random import randint
number_of_trials = 100
range_of_random_numbers = 1000
for each in range(number_of_trials):
    print randint(range(range_of_random_numbers))

由于int对象不可迭代,因此得到错误:

即)

for a in 1:
    print a

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable