2017-01-19 5 views
1

Ich möchte random.random() verwenden, um zufällige Gleitkommazahlen zu generieren und die Ausgabe mit etwas Mathe zu ändern, so dass Sie schließlich -100 zu +100 erhalten. Unter Verwendung der Mathematik möchte ich Multiplikation und Subtraktion verwenden, um drei zufällige Gleitkommazahlen innerhalb eines Bereichs von -100 bis +100 zu erzeugen.Random Floats von -100 bis 100 mit zufälliger Zufall

hier ist mein Code:

import random 
random_float = (random.random()) 
print("First random float between -100 and +100:", random_float - 10) 
print("Second random float between -100 and +100:", random_float * 70) 
print("Third random float between -100 and +100:", random_float * 100) 

hier ist meine Ausgabe:

First random float between -100 and +100: -9.932043497731886 
Second random float between -100 and +100: 4.756955158768027 
Third random float between -100 and +100: 6.795650226811468 

dieses Recht aus?

+2

Ich bin verwirrt, warum Sie all das tun * 70 und -10? Wenn Sie drei zufällige float von -100 bis 100 wollen, wiederholen Sie einfach die gleiche Sache dreimal "random_float * 100" – Bobby

+1

Was ist Ihre Frage genau? –

+0

@Bobby Müsste es nicht 200 sein (random.random() - 0.5) '? – Tagc

Antwort

5

random.uniform (a, b)

Sie nur random.uniform(a,b) verwenden:

random.uniform(-100,100) 

Wenn Sie unbedingt wollen, es selbst berechnen:

random.random()*200-100 

Ihr Code

So können Sie es in Ihren Code integrieren. Beachten Sie, dass Sie random dreimal anrufen müssen, wenn Sie unabhängig, Zufallszahlen wan:

import random 

for ordinal in ['First', 'Second', 'Third']: 
    random_float = random.uniform(-100,100) 
    print "%s random float between -100 and +100: %f" % (ordinal, random_float) 

Es gibt:

First random float between -100 and +100: -67.216959 
Second random float between -100 and +100: 25.984499 
Third random float between -100 and +100: 60.656098 
+0

das sieht gut aus, aber das Problem mit zufälligen Zufall aufgerufen, danke – Supernova

+0

Okay, so verwenden Sie einfach die 'Random. zufällige() * 200-100' Variante. –

0

Da np.random.rand() spuckt eine Zahl zwischen 0 und 1 Sie Folgendes tun müssen :

import numpy as np 

random_float = 200*np.random.rand()-100 

Typischerweise Zufallszahl zwischen a und b zu erzeugen, um, sollten Sie tun

(b-a)*np.random.rand() +a

+1

Hu? Warum sollte man eine extra Bibliothek wie 'numpy' nur für einen zufälligen Wert verwenden? – mkiever

+0

@mkiever Nur Gewohnheit, denke ich. Sie können auch "zufällig" verwenden. –

0

Ihr letzter Versuch von random*100 ist irgendwie richtig, aber das wird nur zwischen 0 (einschließlich) bis 100 (exklusiv) erzeugen. Wenn Sie zwischen -100 bis 100 möchten, sollten Sie tun:

random_float = random.random() 
print("Random float between -100 and +100:", (random_float * 200)-100) 

Die anderen 2 Beispiele sind jedoch falsch. Im ersten Beispiel liegen Ihre Nummern immer im Intervall [-10.0, -9.0]. Im zweiten Beispiel liegen Ihre Nummern immer im Intervall [0.0, 70.0]. Sicher, die Zahlen werden innerhalb dieser Bereiche zufällig sein, aber sie werden nicht innerhalb der -100 bis 100 Bereich, den Sie angegeben haben.

Wenn Sie 3 Zufallszahlen im gleichen Bereich (-100 bis 100) möchten, müssen Sie die random.random() dreimal aufrufen.

+0

rufen Sie es dreimal mit der gleichen Formel? (random_float * 200) -100) das Problem, dass Subtraktion und Multiplikation verwendet wird, aber das sieht wirklich gut aus, danke – Supernova

+0

Ich habe es versucht und es scheint immer mit dem Bereich Ich lief es wie 2 mal und der Bereich kommt in Ordnung – Supernova

+0

Zufallszahlen importieren random_float = random.random() drucken ("Erster zufälliger Gleitkommawert zwischen -100 und +100:", (random_float * 200) -100) drucken ("Zweiter zufälliger Gleitkommawert zwischen -100 und +100:" , (random_float * 150) -100) print ("Dritte zufällige float zwischen -100 und +100:", (random_float * 100) -100) – Supernova