在python中,无论如何每次都有一个变量是一个不同的随机数?

时间:2011-01-06 03:55:18

标签: python variables random python-3.x

基本上我有这个:

import random
variable1 = random.randint(13, 19)

基本上它的作用是给变量1赋一个13到19之间的随机数。很棒。

但是,我想要它做的是每次调用时为该变量分配一个介于13和19之间的不同随机数。无论如何我能做到吗?

如果我不够清楚,这是一个例子:

import random
variable1 = random.randint(13, 19)
print(variable1)
print(variable1)
print(variable1)

我想要的输出看起来像这样:

./script.py
15
19
13

所以是的,无论如何我可以在python中做到这一点? (更具体地说是python3。但答案可能类似于python2的答案)

8 个答案:

答案 0 :(得分:4)

也许是一个愚蠢的问题,但为什么不只是使用函数而不是变量?

或许更多内联你的变量范例,为什么不在对象上使用方法。然后可以将对象作为变量传递,并且该方法返回新的随机数。

答案 1 :(得分:4)

这接近你想要的

>>> import random
>>> variable1 = lambda: random.randint(13, 19)
>>> print(variable1())
18
>>> print(variable1())
15
>>> print(variable1())
17
>>> 

答案 2 :(得分:3)

在那个具体的例子中,有一种相当愚蠢的方式。 print隐式将其参数转换为字符串。您可以重载该功能:

class randomizer():
    def __str__(self):
        return str(random.randint(13, 19))

variable1 = randomizer()
print(variable1)
print(variable1)
print(variable1)

答案 3 :(得分:2)

你提到“被叫”这个词,我认为你已经回答了自己的问题。这正是函数或方法的作用。

变量只是对象的引用。您可以在变量中存储一个对象,该对象会覆盖to string方法以生成随机数,但这仍然是一种方法。

最终你要求的是混淆真正发生的事情,因此会产生更少的可维护代码,imho。


执行variable1 = random.randint(13, 19)时,variable1包含不可变对象“数字13”(或其他一些数字)。根据定义,如果不成为另一个对象,它就无法改变相反,你可以用上面提到的可变对象填充你的变量,允许它修改它的“随机数”。或者你可以直接调用一个函数。

这只是一个简单的问题。

答案 4 :(得分:1)

使用:

alist = range(13,20)  
random.shuffle(alist)  

现在你可以按随机顺序遍历这个

答案 5 :(得分:0)

为什么不完全跳过变量?您也可以使用内联函数:print(random.randint(13, 19) + 1)

试试这个,看看它是否符合你的需要;)

print(random.randint(13, 19))
print(random.randint(13, 19))
print(random.randint(13, 19))
print(random.randint(13, 19))
print(random.randint(13, 19))

我看不到任何其他可能性,祝你好运!

答案 6 :(得分:0)

也许我没有正确理解这个问题,但你不能这样做:

print(random.randint(13, 19))

答案 7 :(得分:0)

如何使用random.sample执行任务?它Chooses k unique random elements from a population sequence

import random
v1,v2,v3 = random.sample(range(13,20),3)
print v1,v2,v3

当然,我已经为3个变量赋予了它,你可以将它用于n个变量。

相关问题