如何在python中生成负的随机值

时间:2012-05-14 08:04:58

标签: python random

我开始学习python,我尝试通过传递负数和正数来生成随机值。我们说-11

我应该如何在python中执行此操作?

9 个答案:

答案 0 :(得分:26)

使用random.uniform(a, b)

>>> import random
>>> random.uniform(-1, 1)
0.4779007751444888
>>> random.uniform(-1, 1)
-0.10028581710574902

答案 1 :(得分:5)

import random

def r(minimum, maximum):
    return minimum + (maximum - minimum) * random.random()

print r(-1, 1)
编辑:@ San4ez的random.uniform(-1, 1)是正确的方法。无需重新发明轮子......

无论如何,random.uniform()被编码为:

def uniform(self, a, b):
    "Get a random number in the range [a, b) or [a, b] depending on rounding."
    return a + (b-a) * self.random()

答案 2 :(得分:3)

如果你想要integer in a specified range

print random.randrange(-1, 2)

它使用与range相同的约定,因此不包括上限。

如果您需要浮点值,

random.uniform会执行类似的操作,但如果包含上限,则为not always clear

答案 3 :(得分:1)

大多数语言都有一个函数,它会返回[0,1]范围内的随机数,然后您可以操作它以适应您需要的范围。在python中,函数是random.random。因此,对于[-1,1]的范围,您可以这样做:

import random
random_number = random.random() * 2 - 1

通过将数字加倍,得到[0,2]的范围,并从中减去1,得到[-1,1]。

答案 4 :(得分:1)

您也可以这样做

import random
random.choice([-1, 1])

答案 5 :(得分:1)

如果要从给定间隔中随机获取一个整个

示例:

 "keyword": [
   "sample1",
   "service"
 ],

间隔[-1,1]

答案 6 :(得分:0)

我发现这可以用于列表理解:

print([x for x in [random.randint(1, 11) * -1]])

#int range is n1 to n2
def make_negative(n1, n2):
    print([x for x in [random.randint(n1, n2) * -1]])

make_negative(1,10)

答案 7 :(得分:0)

我今天注意到了。

 random.randint(a, b)

其中B> A或B大于A

所以如果我们用-999代替A,用1代替B

它将为我们提供一个负的随机整数或0和1。

这也是数学中的规则,较大的负数的值小于较小的负数的值,例如-999 <-1

此规则可以在这里应用!

答案 8 :(得分:0)

如果要在正,负或混合范围内选择n个随机值,则可以使用random.sample(range(min,max),population)。

约束条件是距离(max-min)必须小于或等于总体值。在上面的示例中,您最多可以生成6个值

>> import random
>> random.sample(range(-3,3), 5) 
[-2, -3, 2, -1, 1]