Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Java (pseudo)zufallszahl komplett selber
- Ersteller JJJT
- Erstellt am
Hier holst du schon eine Zufallszahl mit mt_rand() ab und wendest ein paar konstante Funktionen drauf an (wozu auch immer...), da kannst du ja auch gleich die Zufallszahl verwenden...
Zufallszahl (n=0) = floor(($random + pi)^8) ((Edit: richtig: ($random + pi)^8))
Zeile 8 ändert nur den Seed auf eine andere Zahl, die wieder von $random abhängt (falls die Funktion nicht ohnehin oben $Seed aus einer Zufallszahl nehmen würde)
Zufallszahl (n) = floor((Zufallszahl(n-1) - floor(Zufallszahl(n-1)) + pi)^8) ((Edit: richtig: (Zufallszahl(n-1) - floor(Zufallszahl(n-1)) + pi)^8))
Im Endeffekt muss man trotzdem die erste Zufallszahl zufällig wählen, sonst hat man erst wieder die komplett gleiche Zahlenfolge
Achja:
Zeile 8 scheint auch nicht allzu großartig zu funktionieren, siehe (mit Seed = 1):
http://www.wolframalpha.com/input/?i=+f%280%29%3Dfloor%28%281%2Bpi%29^8%29%2C+f%28n%29%3Dfloor%28%28f%28n-1%29-floor%28f%28n-1%29%29%2Bpi%29^8%29
Die Funktion läuft nur mehr statisch nach dem ersten Seedwechsel, kann aber auch sein, dass ich mich verschrieben/vertan habe.
(Edit:
Ja, ich habe Mist gebaut - da oben sind 2 floor-Funktionen zu viel (die werden ja nur bei der Ausgabe verwendet!
Hier der korrekte Plot etc.:
http://www.wolframalpha.com/input/?i=+f%280%29%3D%281%2Bpi%29^8%2C+f%28n%29%3D%28f%28n-1%29-floor%28f%28n-1%29%29%2Bpi%29^8
)
Die Lösung wird wohl sein, irgendwelche anderen externen Parameter zu finden, die nicht statisch sind: Benutzereingabe, Uhrzeit, Prozessid, Speicherbereich in dem das Programm liegt... und mit dem dann eine beliebige Folge zu seeden, die möglichst zufällig verläuft.
Falls du Zeit selbst nicht abfragen darfst könntest du versuchen, Code (z.B. eine Fibonaccifolge) eine gewisse fixe Zeit laufen zu lassen (k.A. ob das mit Java leicht möglich ist), dabei sollte je nach Computerlast auch nicht immer das gleiche Ergebnis geliefert werden.
Zufallszahl (n=0) = floor(($random + pi)^8) ((Edit: richtig: ($random + pi)^8))
Zeile 8 ändert nur den Seed auf eine andere Zahl, die wieder von $random abhängt (falls die Funktion nicht ohnehin oben $Seed aus einer Zufallszahl nehmen würde)
Zufallszahl (n) = floor((Zufallszahl(n-1) - floor(Zufallszahl(n-1)) + pi)^8) ((Edit: richtig: (Zufallszahl(n-1) - floor(Zufallszahl(n-1)) + pi)^8))
Im Endeffekt muss man trotzdem die erste Zufallszahl zufällig wählen, sonst hat man erst wieder die komplett gleiche Zahlenfolge
Achja:
Zeile 8 scheint auch nicht allzu großartig zu funktionieren, siehe (mit Seed = 1):
http://www.wolframalpha.com/input/?i=+f%280%29%3Dfloor%28%281%2Bpi%29^8%29%2C+f%28n%29%3Dfloor%28%28f%28n-1%29-floor%28f%28n-1%29%29%2Bpi%29^8%29
Die Funktion läuft nur mehr statisch nach dem ersten Seedwechsel, kann aber auch sein, dass ich mich verschrieben/vertan habe.
(Edit:
Ja, ich habe Mist gebaut - da oben sind 2 floor-Funktionen zu viel (die werden ja nur bei der Ausgabe verwendet!
Hier der korrekte Plot etc.:
http://www.wolframalpha.com/input/?i=+f%280%29%3D%281%2Bpi%29^8%2C+f%28n%29%3D%28f%28n-1%29-floor%28f%28n-1%29%29%2Bpi%29^8
)
Die Lösung wird wohl sein, irgendwelche anderen externen Parameter zu finden, die nicht statisch sind: Benutzereingabe, Uhrzeit, Prozessid, Speicherbereich in dem das Programm liegt... und mit dem dann eine beliebige Folge zu seeden, die möglichst zufällig verläuft.
Falls du Zeit selbst nicht abfragen darfst könntest du versuchen, Code (z.B. eine Fibonaccifolge) eine gewisse fixe Zeit laufen zu lassen (k.A. ob das mit Java leicht möglich ist), dabei sollte je nach Computerlast auch nicht immer das gleiche Ergebnis geliefert werden.
Zuletzt bearbeitet:
lynxx
Lt. Junior Grade
- Registriert
- Feb. 2005
- Beiträge
- 481
Du kannst auch noch von allerlei erzeugten Objekten in Deiner Klasse (auch this falls nicht static und Strings) den Hash-Wert ( obj.hashCode() ) holen und mit in Zufallszahlenerzeugung miteinbeziehen.
Edit:
MouseListener erzeugen und die Koordinaten für Random verwenden .. event.getX() und event.getY()
Falls der User Eingaben macht, Zeiten zwischen den Eingaben (evtl. Zeiten zwischen einzelnen Tastendrücke falls eigene GUI)
Edit:
MouseListener erzeugen und die Koordinaten für Random verwenden .. event.getX() und event.getY()
Falls der User Eingaben macht, Zeiten zwischen den Eingaben (evtl. Zeiten zwischen einzelnen Tastendrücke falls eigene GUI)
Zuletzt bearbeitet: