Newbie braucht Hilfe bei Laufzeitoptimierung
Verfasst: Freitag 16. Januar 2015, 16:49
Hallo Leute,
ich bin eigentlich noch ein absoluter Anfänger in der Programmierung und ich arbeite mich nun seit zwei Monaten in Python3 ein.
Ich möchte ein Programm schreiben, das Zufallszahlen x_1 bis x_5 erzeugt, die einer bestimmten Verteilung unterliegen.
beispielsweise ist x_1 dreieckverteilt, x_2 normalverteilt, usw und damit werden dann Zufallszahlen y = f(x_1,...,x_5) berechnet,
wobei f irgendeine Funktion ist. Anschließend sollen die Werte für y in einem Histogramm ausgegeben werden.
Das Programm läuft auch bereits, aber bislang habe ich für f nur die vier Grundrechenarten und Potenzen verwendet.
Nun habe ich ein Problem, wenn ich aus numpy mathematische Funktionen wie cos, sin und exp verwenden will.
Mein Problem besteht darin, dass die Laufzeit bei 3*10**5 Zufallszahlen bis zu 180 Sekunden und teilweise noch länger beträgt.
Hier einmal ein Minimalbeispiel, dass bei mir nach 10 Minuten noch kein Histogramm zum Vorschein bringt.
Ich habe bereits im Internet und hier im Forum ein wenig gesucht und dabei gelesen, dass das random-Modul in Python sehr langsam sein soll, dass es aber hin und wieder
Wege und Möglichkeiten gibt, die Laufzeit zu optimieren. Daher wollte ich einmal fragen, ob das bei meinem Vorhaben auch möglich ist und ob jemand
einen effektiveren Weg sieht, ein solches Histogramm zu erstellen.
Schon einmal vielen lieben Dank im Voraus!
ich bin eigentlich noch ein absoluter Anfänger in der Programmierung und ich arbeite mich nun seit zwei Monaten in Python3 ein.
Ich möchte ein Programm schreiben, das Zufallszahlen x_1 bis x_5 erzeugt, die einer bestimmten Verteilung unterliegen.
beispielsweise ist x_1 dreieckverteilt, x_2 normalverteilt, usw und damit werden dann Zufallszahlen y = f(x_1,...,x_5) berechnet,
wobei f irgendeine Funktion ist. Anschließend sollen die Werte für y in einem Histogramm ausgegeben werden.
Das Programm läuft auch bereits, aber bislang habe ich für f nur die vier Grundrechenarten und Potenzen verwendet.
Nun habe ich ein Problem, wenn ich aus numpy mathematische Funktionen wie cos, sin und exp verwenden will.
Mein Problem besteht darin, dass die Laufzeit bei 3*10**5 Zufallszahlen bis zu 180 Sekunden und teilweise noch länger beträgt.
Hier einmal ein Minimalbeispiel, dass bei mir nach 10 Minuten noch kein Histogramm zum Vorschein bringt.
Code: Alles auswählen
import random
import matplotlib.pyplot as plt
import sympy
import time
Timestamp_1 = time.time()
Data = [ float(sympy.sin(random.triangular(0, 5, 10))) for i in range(0, 3*10**5) ]
plt.hist(Data ,bins = 55, color='maroon', normed=True)
plt.title('Error Distribution')
plt.xlabel('x-Achse')
plt.ylabel("Probability")
plt.show()
Timestamp_2 = time.time()
T=round(Timestamp_2 - Timestamp_1,2)
print('Laufzeit:', T)
Wege und Möglichkeiten gibt, die Laufzeit zu optimieren. Daher wollte ich einmal fragen, ob das bei meinem Vorhaben auch möglich ist und ob jemand
einen effektiveren Weg sieht, ein solches Histogramm zu erstellen.
Schon einmal vielen lieben Dank im Voraus!