[英]In python, is there anyway to have a variable be a different random number everytime?
基本上我有这个:
import random
variable1 = random.randint(13, 19)
基本上,这样做是为variable1分配一个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答案)
也许这是一个愚蠢的问题,但是为什么不仅仅使用函数而不是变量呢?
也许更符合您的变量范例,为什么不对对象使用方法。 然后可以将该对象作为变量传递,并且该方法返回新的随机数。
这接近您想要的
>>> import random
>>> variable1 = lambda: random.randint(13, 19)
>>> print(variable1())
18
>>> print(variable1())
15
>>> print(variable1())
17
>>>
在该特定示例中,有一种相当精明的方法。 print
将其参数隐式转换为字符串。 您可以重载该功能:
class randomizer():
def __str__(self):
return str(random.randint(13, 19))
variable1 = randomizer()
print(variable1)
print(variable1)
print(variable1)
您提到“被叫”一词,以这种方式,我认为您已经回答了自己的问题。 这正是功能或方法的工作。
变量只是对对象的引用。 您可以将对象存储在变量中,该对象将覆盖to字符串方法以生成随机数,但这仍然是一个方法。
最终,您的要求将使幕后的实际情况变得晦涩难懂,结果将创建难以维护的代码,恕我直言。
当您执行variable1 = random.randint(13, 19)
, variable1
包含不可变对象“数字13”(或其他数字)。 根据定义,它不能更改而不会成为另一个对象。 取而代之的是,您可以使用前面提到的可变对象填充变量,以允许其修改其“随机数”。 或者,您可以直接调用一个函数。
它只是一个简单的问题。
采用:
alist = range(13,20)
random.shuffle(alist)
现在您可以按随机顺序遍历
在任务中使用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个变量。
为什么不完全跳过变量? 您也可以使用内联函数: 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))
我看不到其他任何可能性,祝您好运!
也许我没有正确理解问题,但您不能这样做:
print(random.randint(13, 19))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.