2012-05-14 8 views

Antwort

5
import random 

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

print r(-1, 1) 

EDIT: @ San4ez die random.uniform(-1, 1) der richtige Weg ist. Keine Notwendigkeit, das Rad neu zu erfinden ...

Wie auch immer, ist random.uniform() codiert als:

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() 
+1

'def rand(): return 4 # Generiert durch faire Würfelrolle. Garantiert zufällig zu sein. –

+0

Vielen Dank. Aber kann ich nicht auf diese Weise tun. Wo ich den Wert als Argument übergeben möchte, während das Skript ausgeführt wird. . #!/Usr/bin/env python import sys, Random r = sys.argv [1] y = sys.argv [2] Druck random.range (y, r) – user1393251

+0

@ user1393251 - Sie tun können, es auf diese Weise (meine 'r' Methode wird so genannt, wie die richtige' random.uniform' ist), nur ich erfinde das Rad hier neu ... Nehmen Sie San4ez's Antwort. – eumiro

23

Verwenden random.uniform(a, b)

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

Die meisten Sprachen haben eine Funktion, die eine Zufallszahl im Bereich zurück [0 , 1], die Sie dann bearbeiten können, um die von Ihnen benötigte Reichweite zu erreichen. In Python ist die Funktion random.random. Also für Ihren Bereich von [-1, 1], können Sie dies tun:

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

Durch die Zahl verdoppeln wir eine Reihe von [0, 2] erhalten, und durch eine von ihr subtrahiert, wir [get - 1, 1].

2

wenn Sie integer in a specified range wollen:

print random.randrange(-1, 2) 

es verwendet die gleiche Konvention wie range, so ist die Obergrenze nicht eingeschlossen.

random.uniform macht etwas Ähnliches, wenn Sie Werte müssen schwimmen, aber es ist not always clear wenn die obere Grenze enthalten ist oder nicht

Verwandte Themen