Zaczynam się uczyć Pythona, starałem się generować losowe wartości, przekazując liczbę ujemną i dodatnią. Powiedzmy: -1
, 1
.Jak wygenerować ujemną wartość losową w python
Jak to zrobić w python?
Zaczynam się uczyć Pythona, starałem się generować losowe wartości, przekazując liczbę ujemną i dodatnią. Powiedzmy: -1
, 1
.Jak wygenerować ujemną wartość losową w python
Jak to zrobić w python?
import random
def r(minimum, maximum):
return minimum + (maximum - minimum) * random.random()
print r(-1, 1)
EDYCJA: @ San4ez's random.uniform(-1, 1)
jest prawidłowy sposób. Nie trzeba wyważać otwartych drzwi ...
Zresztą random.uniform()
jest kodowana jako:
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()
użytkowania random.uniform(a, b)
>>> import random
>>> random.uniform(-1, 1)
0.4779007751444888
>>> random.uniform(-1, 1)
-0.10028581710574902
Większość języków mają funkcję, która będzie zwracać liczbę losową w przedziale [0 1], którą następnie można manipulować, aby uzyskać odpowiedni zakres. W pythonie funkcja ta to random.random
. Tak dla zakresu [-1, 1], można to zrobić:
import random
random_number = random.random() * 2 - 1
przez podwojenie liczby otrzymujemy szereg [0, 2], a przez odjęcie jednego z niego, otrzymujemy [- 1, 1].
jeśli chcesz integer in a specified range:
print random.randrange(-1, 2)
wykorzystuje tę samą konwencję za range
, więc górna granica nie jest wliczony w cenę.
random.uniform
robi coś podobnego, jeśli trzeba unosić wartości, ale to not always clear jeśli górna granica jest włączone czy nie
Można też zrobić coś takiego
import random
random.choice([-1, 1])
'def rand(): powrót 4 # Wygenerowane przez rzetelny rzut kostką. Gwarantowane być losowe. " –
Wielkie dzięki. Ale nie mogę zrobić w ten sposób. Gdzie chcę przekazać wartość jako argument podczas uruchamiania skryptu. #!/usr/bin/env python importuj sys, losowo r = sys.argv [1] y = sys.argv [2] drukuj random.range (y, r) – user1393251
@ user1393251 - możesz zrobić w ten sposób (moja metoda "r" jest nazywana tą samą metodą, co poprawne "random.uniform"), właśnie wymyślam tutaj koło ... Weź odpowiedź San4ez. – eumiro