我开始学习python,我尝试通过传入一个负数和正数来生成随机值。比方说 -1
,1
。
我应该如何在python中做到这一点?
>>> import random
>>> random.uniform(-1, 1)
0.4779007751444888
>>> random.uniform(-1, 1)
-0.10028581710574902
import random
def r(minimum, maximum):
return minimum + (maximum - minimum) * random.random()
print r(-1, 1)
编辑:@San4ezrandom.uniform(-1, 1)
是正确的方法。无需重新发明轮子……</p>
无论如何,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()
if you want integer in a specified range:
print random.randrange(-1, 2)
it uses the same convention as range
, so the upper limit is not included.
random.uniform
does something similar if you need float values, but it's not always clear if the upper limit is included or not
如果你想要一个给定间隔的随机整数
例子:
from random import randint
randint(-1,1) --> Randomly returns one of the following: -1, 0, 1
区间 [-1, 1]
大多数语言都有一个函数,它将返回 [0, 1] 范围内的随机数,然后您可以对其进行操作以适应您需要的范围。在 python 中,函数是random.random
. 因此,对于您的 [-1, 1] 范围,您可以这样做:
import random
random_number = random.random() * 2 - 1
通过将数字加倍,我们得到 [0, 2] 的范围,通过从中减去一个,我们得到 [-1, 1]。
你也可以做这样的事情
import random
random.choice([-1, 1])
我发现这适用于列表理解:
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)
我今天注意到了这一点。
random.randint(a, b)
其中 B > A 或 B 大于 A
所以如果我们用 -999 代替 A 和 1 代替 B
它将给我们一个负随机整数或 0 和 1。
此外,这是数学中的一条规则,较大的负数的值小于较小的负数,例如 -999 < -1
这条规则可以在这里应用!
如果您想要正、负或混合范围内的 n 个随机值,您可以使用 random.sample(range(min,max), population)。
约束是距离(最大-最小)必须小于或等于总体值。在上面的示例中,您最多可以生成 6 个值
>> import random
>> random.sample(range(-3,3), 5)
[-2, -3, 2, -1, 1]