14

私はpythonを学び始めています。負の数と正の数を渡してランダムな値を生成しようとしました。-1としましょう 1

Pythonでこれを行うにはどうすればよいですか?

4

9 に答える 9

30

使用するrandom.uniform(a, b)

>>> import random
>>> random.uniform(-1, 1)
0.4779007751444888
>>> random.uniform(-1, 1)
-0.10028581710574902
于 2012-05-14T08:08:12.370 に答える
5
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()
于 2012-05-14T08:06:09.450 に答える
3

指定された範囲の整数が必要な場合:

print random.randrange(-1, 2)

と同じ規則を使用するrangeため、上限は含まれていません。

random.uniformfloat値が必要な場合は同様のことを行いますが、上限が含まれているかどうかは必ずしも明確ではありません

于 2012-05-14T08:09:57.880 に答える
1

ほとんどの言語には、[0、1]の範囲の乱数を返す関数があり、必要な範囲に合わせて操作できます。Pythonでは、関数はrandom.randomです。したがって、[-1、1]の範囲では、次のように実行できます。

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

数値を2倍にすると、[0、2]の範囲が得られ、そこから1を引くと、[-1、1]が得られます。

于 2012-05-14T08:08:25.760 に答える
1

このようなこともできます

import random
random.choice([-1, 1])
于 2013-12-17T22:25:08.803 に答える
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)
于 2019-02-14T18:50:13.650 に答える