我开始学习python,我尝试通过传递负数和正数来生成随机值。我们说-1
,1
。
我应该如何在python中执行此操作?
答案 0 :(得分:26)
>>> 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]