Math.Random anders verteilen

Underworld

Aktives Mitglied
Hallo,
folgendes Problem:
Ich will Zufallszahlen generieren und zwar mit folgender Verteilung:

int 1: 50 %
int 2: 40 %
int 3: 7 %
int 4: 2 %
int 5: 1 %

Ich könnte mir das auch irgendwie mit if-Abfragen etc. zusammenbasteln, aber gibt es in Java für dieses Problem vielleicht schon vorgefertigte Methoden?

vielen Dank.
 

bERt0r

Top Contributor
Eventuell hilft dir Random.nextGaussian() weiter.
Edit: Ansonsten
Non-Uniform Random Number Distribution Using Probabilities

There are many different ways we can produce a non-uniform distributions of random numbers. One simple way would be to fill an array with the appropriate distribution of possibilities, picking one random element from that array each time. Try:

int[] stuff = new int[5];
stuff[0] = 1;
stuff[1] = 1;
stuff[2] = 2;
stuff[3] = 3;
stuff[4] = 3;
int index = int(random(stuff.length));
println(stuff[index]);

This is a terribly inefficient example in many ways, but it’s easy to see how we now have a 40% chance of picking 1, 20% chance of picking 2, and 40% chance of picking 3. Think about how you might extend this code to work with a much larger array with many different possibilities. You might even consider using a java ArrayList, which would allow you to remove elements as you pick them if that were a requirement of your program.

Another strategy for how we can create a likelihood for different events to occur is to ask for a random number (for simplicity, we consider random numbers between 0 and 1) and only allow the event to happen if the random number we pick is within a certain range, i.e.

float prob = 0.10f; //to store a probability of 10%
float r = random(1); //get a random floating point value between 0 and 1
if (r < prob) { //if our random is less than .1
/*INSTIGATE THE EVENT HERE*/
}

In our applets, we are often tempted to simply map some parameter or variable to a random number (i.e. produce random colors, set random velocities, locations, etc.) producing a uniform distribution of values. However, a more interesting way is to assert control over the probabilities of a set of possible outcomes.

Outcome A — 10% | Outcome B — 60% | Outcome C — 30%

To implement this in code, we pick one random float and check where it falls (between 0 and 0.10 (10%) –> outcome A, between 0.10 and 0.70 (60%) –> B,
and between 0.70 and 1.0 (30%) –> C).

//probabilities for 3 different cases (these need to add up to 100% since something always occurs here!)
float red_prob = 0.10; // 10% chance of red color occurring
float green_prob = 0.60 + red_prob; // 60% chance of green color occuring
float blue_prob = 0.30 + green_prob; // 30% chance of blue color occuring
float num = random(1); // pick a random number between 0 and 1
if (num < red_prob) {
fill(255,0,0,50);
} else if (num < green_prob) {
fill(0,255,0,50);
} else {
fill(0,0,255,50);
}
ellipse(random(width),random(height),16,16);
 
Zuletzt bearbeitet:

Final_Striker

Top Contributor
Erstelle ein Array der Länge 100
Fülle das Array mit deinen Zahlen
Wähle mir Random von 0-99 eine zufällige Position im diesem Array aus
So bekommst du deine gewünschte Verteilung.
 

faetzminator

Gesperrter Benutzer
Du kannst aber auch einfach [c]Math.random()[/c] verwenden, und dabei nach [c]< 0.5[/c], [c]< 0.9[/c], [c]< 0.97[/c] und [c]< 0.99[/c] unterscheiden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Math.random Allgemeine Java-Themen 9
Javafan01 Deklarieren einer Math.random() Zufallszahl Allgemeine Java-Themen 16
C Math.random() vs Random Allgemeine Java-Themen 5
S Random() vs Math.random Allgemeine Java-Themen 4
H Math.random() Allgemeine Java-Themen 3
S Potenzieren mit rationalen Potenzen ohne Math.pow Allgemeine Java-Themen 16
Arif Math.cos liefert komische Werte Allgemeine Java-Themen 8
O Best Practice Laufzeitvergleich Math.sqrt() aus Java und sqrt() aus C++ Allgemeine Java-Themen 1
J Methoden Math.abs Allgemeine Java-Themen 3
so_ein_Komischer Erste Schritte java Math Klasse finden? Allgemeine Java-Themen 2
J Commons Math 3.0 Multiple Regression Allgemeine Java-Themen 4
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
V Math.log auf meine Art zu ungenau Allgemeine Java-Themen 15
H Math.acos(10) => NaN Allgemeine Java-Themen 11
E Warum kann Math nicht instanziert werden? Allgemeine Java-Themen 17
h0b0 WTF? - Problem mit Math.pow() Allgemeine Java-Themen 6
A Wird Math.sin bzw. sinus auf Maschinencode abgebildet Allgemeine Java-Themen 6
isowiz Unerklärliches Problem mit Math.pow :( Allgemeine Java-Themen 4
M Math-String-Formel berechnen lassen Allgemeine Java-Themen 4
D java.lang.Math fehlerhaft? Allgemeine Java-Themen 18
E Random Generator Allgemeine Java-Themen 6
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
G Aus JTextField Zahlen auslesen und random generieren Allgemeine Java-Themen 10
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
S Random Passwort für den User + Hashen Allgemeine Java-Themen 6
BRoll Random - Wie aufgebaut? Allgemeine Java-Themen 9
T java.uil.Random liefert negative Werte Allgemeine Java-Themen 2
G Random zeichensatz Allgemeine Java-Themen 2
N Die Klasse Random in Java Allgemeine Java-Themen 3
H java.util.random magischer Startwert? Allgemeine Java-Themen 2
L Zufallszahlen mit Random.nextdouble() Allgemeine Java-Themen 3
dayaftereh Random Numbers in Java Allgemeine Java-Themen 7
Q Random mit beeinflusster Wahrscheinlichkeit Allgemeine Java-Themen 4
I Random Acces auf ein Set Allgemeine Java-Themen 4
S Random funktion in einer Grafischen Oberfläche Allgemeine Java-Themen 10
ARadauer Random keine Zahlen doppelt Allgemeine Java-Themen 4
S Random Allgemeine Java-Themen 9
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
P Threads Objekt im Konstruktor anders wie im Run()-Block Allgemeine Java-Themen 10
E Anwendung verhält sich unter Mac anders als Unter Windows. Allgemeine Java-Themen 4
M liste von listen anders ausgeben Allgemeine Java-Themen 1
O RSA (JCE) anders als RSA in C ? Allgemeine Java-Themen 6
X Websiten auslesen, Browser stellt Links anders da. Allgemeine Java-Themen 10
G experten gefragt? regx oder irgendwie anders . Allgemeine Java-Themen 3
reibi Klassenpfad mal anders - dynamisches Laden einer Klasse Allgemeine Java-Themen 7
L UnsatisfiedLinkError mal anders Allgemeine Java-Themen 4
A Warum verhält sich a+=b anders als a=a+b? Allgemeine Java-Themen 5
A StringTokenizer oder doch anders? Formelinterpretieren. Allgemeine Java-Themen 4
D gewisse Zeichen sind nach dem entschlüsseln anders Allgemeine Java-Themen 2
M ArrayIndexOutOfBounds! Wie gehts anders? Allgemeine Java-Themen 10
S ein taschenrechner, aber etwas anders. Allgemeine Java-Themen 2
8 Was ist denn jetzt anders? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben