Echte Zufallszahlen

X

xazen

Ambitioniertes Mitglied
0
Hallo Leute,

ich hab mal wieder eine Frage. Dachte erst, dass es sicher nicht so schwer wird. Aber nachdem ich mich genauer informiert habe, scheint es doch schwerer zu sein als ich denke?

Jedenfalls würde ich gerne irgendwie echte Zufallszahlen generieren. Keine Pseudo-Zufallszahl.
 
Ich kann mir nicht vorstellen, dass du tatsächlich eine Anwendung hast, bei der du einen Unterschied bemerken würdest.
In Software kannst du das jedenfalls nicht machen. Du kannst dir höchstens online eine ziehen von irgendwo.
 
ich habe eine View Klasse, wo mithilfe eines zufällig generierten Integers das Verhalten eines KIs bestimmt wird. Manchmal machen 2 Verhalten gleich viel Sinn und ich wil es dem Zufall überlassen, damit der Ausgang des Spiels immer ein anderer ist. Es ist etwas blöd, wenn die KI immer das gleiche macht und man die KI immer über die gleiche Art und Weise besiegen kann.
 
Für Dein Vorhaben sollte der normale PRNG aus java.util.Random reichen. Du kannst ihn ggf mit der aktuellen Zeit zu Beginn des Spieles seeden.

"Echten" Zufall gibt es Rechner natürlich nicht, aber mit Kryptografischen Hashes (siehe java.security.SecureRandom) kommt man da schon nahe dran.

Man beachte aber, dass dann eine Zufallszahl mit höhrerem Rechenaufwand einher geht, und dass die Krypto-Engine von Android (momentan) die Bouncycastle-Implementierung ist (da funktionieren viele Beispiele aus dem Netz nicht, da diese idR die SUN Implementierung nutzen)
 
Zuletzt bearbeitet:
Code:
int random = (int) (Math.random()*0+1);
Über den Code habe ich immer: 1 bekommen. Jedenfalls nach etwa 10x.
Für das Verhalten brauche ich 2 Zufallszahlen. Und der hatter immer das gleich gemacht. Dabei gibt es noch 3 andere Möglichkeiten.

Wie würde es denn mit Random klappen ? Wenn es mit Random geht, würde ich wohl erne für etwas mehr Performance bei Random bleiben.
 
*0 ??? Hast du dich nur hier vertippt? So wie es da steht ist doch 1 korrekt.
Am Anfang ein Seed mit Zeit - und random ist für 99 % Zufall genug.
 
genau meinte natürlich * 1 + 1

ich werde mir das mit dem Seed dann mal anschauen. Danke
 
  • random() ist eine Zahl zwischen 0 und 1,
  • *1 ändert nix daran
  • und +1 liefert eine Zahl zwischen 1 und 2.
  • die per (int) nach unten runden liefert 1.
Mit random() * 2 + 1 hättest Du mehr Erfolg.
 
Um Missverstände zu vermeiden poste ich einfach nochmal so wie ich es wirklich als Methode hatte:

Code:
    [B]public[/B] [B]static[/B] [B]int[/B] randomZahl([B]int[/B] untere, [B]int[/B] obere)
    {
    [B]int[/B] spanne = obere - untere;
    [B]return[/B] ([B]int[/B]) (Math.[I]random[/I]()*spanne+untere);
    }
Müsste ja also funktionieren ?
 
xazen schrieb:
Manchmal machen 2 Verhalten gleich viel Sinn und ich wil es dem Zufall überlassen, damit der Ausgang des Spiels immer ein anderer ist.
Ich würde das viel einfacher machen:

Code:
if (new Date().getTime() % 2 == 0)
  // Lösung 1
else
  // Lösung 2
Somit ist - abhängig wann das Spiel beendet wurde - entscheidend ob gerade eine gerade oder eine ungerade Millisekunde dran ist. Vollkommen ausreichend.
 
xazen schrieb:
Um Missverstände zu vermeiden poste ich einfach nochmal so wie ich es wirklich als Methode hatte:

Code:
    [B]public[/B] [B]static[/B] [B]int[/B] randomZahl([B]int[/B] untere, [B]int[/B] obere)
    {
    [B]int[/B] spanne = obere - untere;
    [B]return[/B] ([B]int[/B]) (Math.[I]random[/I]()*spanne+untere);
    }
Müsste ja also funktionieren ?

Nicht, wenn randomZahl() die Werte von untere bis obere (einschließlich) liefern soll. Denn das sind obere-untere+1 verschiedene mögliche Werte. Zähl mal nach :D
 
Zuletzt bearbeitet:
xazen schrieb:
Hallo Leute,

ich hab mal wieder eine Frage. Dachte erst, dass es sicher nicht so schwer wird. Aber nachdem ich mich genauer informiert habe, scheint es doch schwerer zu sein als ich denke?

Nimm doch den Beschleunigungsmesser - das Billigteil ist so was von verrauscht das es
einen brechränkten Anzahl der Werte ziemlich zufällig ausgibt.

Andere Sensoren könnten auch interessant sein
 
danke das ist eine sehr gute Alternative :)
 

Ähnliche Themen

Z
Antworten
0
Aufrufe
1.057
Zoopa
Z
L
  • lumo2707
Antworten
4
Aufrufe
743
amfa
A
F
Antworten
2
Aufrufe
3.733
Flugrost
F
Zurück
Oben Unten