繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM