1. xazen, 05.04.2011 #1
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    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.
     
  2. Kranki, 05.04.2011 #2
    Kranki

    Kranki Ehrenmitglied

    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.
     
  3. xazen, 05.04.2011 #3
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    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.
     
  4. DieGoldeneMitte, 05.04.2011 #4
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    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: 05.04.2011
  5. xazen, 05.04.2011 #5
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    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.
     
  6. miha, 05.04.2011 #6
    miha

    miha Fortgeschrittenes Mitglied

    *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.
     
  7. xazen, 05.04.2011 #7
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    genau meinte natürlich * 1 + 1

    ich werde mir das mit dem Seed dann mal anschauen. Danke
     
  8. DieGoldeneMitte, 05.04.2011 #8
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    • 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.
     
  9. xazen, 05.04.2011 #9
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    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 ?
     
  10. garak, 05.04.2011 #10
    garak

    garak Ehrenmitglied

    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.
     
  11. DieGoldeneMitte, 05.04.2011 #11
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    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: 05.04.2011
  12. Kranki, 05.04.2011 #12
  13. ko5tik, 05.04.2011 #13
    ko5tik

    ko5tik Android-Experte

    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
     
  14. xazen, 05.04.2011 #14
    xazen

    xazen Threadstarter Android-Hilfe.de Mitglied

    danke das ist eine sehr gute Alternative :)
     

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. zufallszahl android

    ,
  2. android zufallsgenerator