Bessere Zufallszahlen

JJB

Cogito ergo brumm
Tach auch !

Bin kein Java Mensch, hab aber trotzdem eine Frage hierzu.

Wenn ich eine Zufallszahl erzeugen möchte, weiß ich aus Erfahrung (zu C Zeiten), daß es unterschiedliche Methoden gibt eine Zufallazahl zu ermitteln.
Einige Algorithmen benutzen Datum und Zeit um einen zufälligen Faktor einzustreuen. Manche gehen dabei bis sec manche bis msec.

Wenn ich jedoch mehrmals pro Sekunde oder mehrere hundert mal pro Sekunde eine Zufallszahl haben will, wie kann ich dann eine sinnvolle Zahl ermitteln ?Unabhängig welchen Formats erstmal. Gehen wir davon aus ich kann sie umwandeln. Wie kann ich sie erzeugen ?

Wenn das in Java überhaupt so läuft.


MfG JJB
 
Tut es nicht, wenn man mehrmals pro Sekunde eine Zufallszahl anfordert kommen oft 20 oder mehr gleiche Zufallszahlen
 
Schau dir mal die Klasse java.util.Random an:
Code:
import java.util.Random;

public class Test
{
    public static void main(String[] args)
    {
        Random rnd = new Random();
        for (int i=0; i<25000; i++)
        {
            System.out.println(rnd.nextInt());
        }
    }
}
Peter
 
Ich kenne das Problem noch aus alten Delphi zeiten.
Die random funktion war zu gewissen Datum und Uhrzeit-ständen einfach nicht zu gebrauchen.

Ein Beispiel : Ich wollte eine Zahl zwischen 0-2 haben doch bekam ich zu 90% immer 1.

So bastelte ich mir auf die Schnelle eine eigene Funktion die mir eine Zufallszahl ausgiebt. Ich zog einfach so viele wie mögliche Parameter mit ein (also nicht nur Zeit und Datum).
Werde einfach etwas kreativ und schaffe dir ein eigenes Chaos, das sich jede Millisekunde neu ortnet und komplet verändert.

.
 
Ich hab auch ein Problem mit Zufallszahlen. Das heißt mehr oder weniger, die zufallszahlen werden erzeugt jedoch ist das problem das ich bei int werten werte von -1273238 bis +129398324 ungefähr :D ruasbekommen. ich moechte aber das ich fuer die zufallszahlen nur ganze zahlen zwischen 1 und 100 bekomme.

hab das bereits mit einer abfrage versucht, jede zufallszahl zu ueberpruefen, jedoch dauert das ewig, da er jede menge zahlen ueberpruefen muss bis das programm eine zahl aus dem bereich 0 - 100 greift noch besser waere natuerlich etwas mit parametern machen zu koennen, so das man sagt nimm nur zahlen aus dem bereich von 1 - n .
Code:
mit den zufallszahlen moechte ich dann ein 2dimensionales array mit n x n feldern füllen lassen .


        public int zufallszahl()    
        {
            Random zufallszahlengenerator;
            zufallszahlengenerator = new Random();
            int index = zufallszahlengenerator.nextInt();
            return index;
        }

  public void main(int arrayw1, int arrayw2)
  {
    int[][] array = new int[wert1][wert2];
        int i=0,j=0;
        
    for(i=0; i<10; i++)
    { 
        for(j=0; j<20; j++)  
        {
            int zufall = zufallszahl();
            array[i][j] = zufall;   
            System.out.println("i="+i+"j="+j+" =  "+zufall);
        }
    }
}


vielleicht kann mir ja einer helfen. Außerdem hab ich nach den ersten 5 durchlaeufen der zweiten forschleife immer eine outofbounds exception.


waere super wenn mir da einer auf die schnelle helfen kann-

danke schonmal
 
Man kann den Wertebereich eingrentzen und die Daten auf einem bestimten Datentyp reduzieren (explizites Casten).

ich moechte aber das ich fuer die zufallszahlen nur ganze zahlen zwischen 1 und 100 bekomme
int zufallszahl=(int)(1+Math.random()*100);
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück