如何设置一个在整个程序中有效的不断重新分配的随机变量?

时间:2012-10-14 01:59:22

标签: python random variable-assignment

我想创建一个名为Random的变量,每次调用它时都会不断变化。

我想要这段代码:

Random = randint(0, 10)
print Random
print Random
print Random

不要给我这样的话:

6
6
6

但更像是:

3
6
1

每次使用之前都不必重新分配Random。我还在几个不同的函数中使用了Random。那么我如何允许它在代码中的任何地方使用它而不必每次都将它重新分配为随机变量?

很抱歉,如果这是一个愚蠢的问题,但我对此很新,我不知道我在做什么。请保持解释简单。

编辑:这里还有一些代码:

def something1(随机,无用,无论如何)

等...

def something2(随机,无用,无论如何)

等...

...

主要():

表示范围内的指数(800):

 Random = randint(1, 10)

 something1(Random, useless, whatever)

Random = randing(1,10)

something2(随机,无用,无论如何)

这会持续一段时间。

6 个答案:

答案 0 :(得分:1)

如果你说的是你想要的(即每次使用时都给出一个随机值的变量),那么你真的不想要一个变量。只需将Random的每个实例替换为randint(0, 10)即可。或者,您可以自己创建函数:

def rand10():
    return randint(0, 10)

然后每次使用rand10()变量时,只需致电Random

答案 1 :(得分:0)

Random只是一个包含randint()生成的值的整数类型。因为它是一个整数类型,所以每次调用都不能改变它的值而不重新分配。

你可以做的是定义一个类,这样当它被告知要打印时,它会返回一个不同的值:

from random import randint

class Random:
   def __str__(self):
      return str(randint(1,10))

random = Random()
print(random)   # prints a value
print(random)   # could print a different value
print(random)   # could print a different value

答案 2 :(得分:0)

Really-Bad-Ideas 的土地上,你几乎可以做你想做的事,但是......因为我们在这里提出了一个非常糟糕的想法,我实际上不会写出来代码,但我会告诉你如何做,如果你想,你可以弄明白......

  1. 创建一个新模块,我们称之为Util
  2. Util写一个课程,我们将该课程称为Crazy
  3. 在班级Util.Crazy中,创建一个名为Random的{​​{3}},其getter返回一个随机值(包含您禁止的任何边界)
  4. 在模块级别创建Util.Crazy名为C的实例
  5. 现在,只要您想要新值
  6. ,就可以拼写C.Random

    我没有给它一个很多的想法,但我没有看到任何明显的方法来摆脱C.Random并只是称它为Random(如果你将Random分配给Crazy().Random,它只是坚持价值,而不是约束力。我确信你可以使用globals()做一些真正可怕的事情,或者你可以使用原始描述符协议来做你想做的事。

答案 3 :(得分:0)

import numpy as np
x = "np.random.randn()"
for i in range(3):
   print(eval(x))

eval()评估传递给它的str变量中写的内容。每次调用eval(x)都会得到一个新的随机变量。

我同意有点作弊,但是由于eval(x)看起来肯定比调用某些表达式更好(特别是如果您的rv分布是由复杂的表达式定义并且您在代码中使用它的话)经常)。

答案 4 :(得分:0)

你好,这可能会迟到,但你可以尝试将 random 分配给 none,然后使用 while 函数给程序一个循环,然后你可以将它分配给你想要的随机数范围。我举个例子;

import random
Random = None
while Random != 0:
     Random = random.randint(0,10)
     print(Random)

这意味着只要值不为零,就会不断生成值,如果生成零,程序就会跳出循环

答案 5 :(得分:-1)

import random
def numbergeneration():
    number = (random.randrange(0,101))
    print(number)
    return number

我相信这就是您所需要的。