![]() |
Re: Random(2) in schnell
Für welche Anzahl an Stufen ist denn die Grafik oben erstellt worden?
Kannst du mal ein paar Testergebnisse also (Levelzahl/durchschnittlicheSteinZahl)-Paare angeben? |
Re: Random(2) in schnell
Zitat:
Bei den Grafiken oben ist x=So oft und y=Anzahl steine Durchschnitt ist ca. 162 |
Re: Random(2) in schnell
Ich kann dir sagen, der Durchschnitt liegt bei exakt 162. Allgemein wird dein Wahrscheinlicher Wert bei n Steinen (und drei Stufen, auf denen man nicht zurückfallen kann) bei (n+1)*n+6 liegen.
Beweis kommt nachher, jetzt hab ich Nachhilfe. |
Re: Random(2) in schnell
Hallo Gereon,
Zitat:
Kannst du die beiden verglichenen Generate-Methoden (mit und ohne "loop unrolling") einmal als Quelltext hier einstellen? Welche Werte hast du für Config.Start und Config.Ziel beim Testen genommen? Gruß Hawkeye |
Re: Random(2) in schnell
hallo geron,
mach doch erst mal 2 tests
|
Re: Random(2) in schnell
Zitat:
|
Re: Random(2) in schnell
Also noch der Beweis:
Deine gesuchte Zahl ist 162. Für die ersten drei Stufen brauchst du 6 Steine (dafür brauchst du keine Simulation, dafür Wertest du die Summe über k*(0.5)^k von 1 bis unendlich aus (Der Erwartungswert für die Anzahl der Schritte um ein Feld nach oben zu kommen, wenn du nicht nach unten darfst. (habe ich, ehrlich gesagt, Maple machen lassen). Du hast Drei solcher Stufen, brauchst im Mittel also sechs Steine, um auf Stufe 3 zu kommen. Jetzt beginnt der interessante Teil der Rechnung. Im ![]() Mit den Sechs Steinen von oben dann also auf die 162 die du in der Simulation auch gefunden hast. Wenn also SFix deine Stufenanzahl ist, bei denen du nicht fallen kannst und SFall deine Stufenanzahl mit Fallmöglichkeit, brauchst du also durchschnittlich
Code:
Steine, um die höchste Stufe das erste Mal zu erreichen. Und das sollte fast in geringerer Zeit als ein random(2)-Aufruf zu berechnen sein :mrgreen:
SFix*2+SFall(SFall+1)
Code:
(Matlab)
% Matrixdarstellung und Gauß % % n=12; % % M=zeros(n,n+1); % % for j=1:(n) % M(j,n+1)=1; % end % % for j=(1:n-2) % M(j+1,j+1)=1; % M(j+1,j)=-0.5; % M(j+1,j+2)=-0.5; % end % end % % M(1,1)=0.5; % M(1,2)=-0.5; % M(n,n)=1; % M(n,n-1)=-0.5; % % % rref(M) % Auswertung der gefundenen Formel n(n+1) n=30; N=zeros(2,n); for i=1:n N(1,i)=i; if i<5 N(2,i)=i*2; else s=i-3; N(2,i)=6+s*(s+1); end end |
Re: Random(2) in schnell
ich glaub das muss ich mir mal in ruhe auf ein blatt papier malen was du da mit den matrizen machst^^
gibt es denn eine Möglichkeit die Wahrscheinlichkeit für eine bestimmte Anzahl an Schritten zu berechnen? |
Re: Random(2) in schnell
Wahrscheinlich schon, aber dafür brauchst du einen anderen Ansatz. Melde dich doch mal beim Board an und frage nach einer Möglickeit. Wenn du Probleme mit der Ausführung hast, kannst du ja auch noch hier fragen. Da wirst du schneller zu einer sauberen Lösung finden, als wieder eine Simulation zu schreiben.
Mit Simulationen wirst du hier auch nicht froh. Bei 100 Steinen gibt es schließlich 1,3*10^30 Mögliche Verläufe (stark übertrieben, da du schon nach dem ersten erreichen der letzten Stufe abbrichst, aber auch ein paar Größenordnungen weniger sind noch zu viele) |
Re: Random(2) in schnell
Liste der Anhänge anzeigen (Anzahl: 1)
Hier noch die Matrix zu Berechung auf Wunsch von glkgereon.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz