zufallszahlen mit gewisser wahrscheinlichkeit erstellen
-
hallo,
ich möchte eine zufallszahl generieren. Die Zahl soll im bereich von 0-100 liegen.
bis hierhin ist das auch kein problem. ich möchte aber nun, dass kleinere zahlen mit einer größeren wahrscheinlichkeit auftreten als große.leider weiß ich nicht, wie ich das anstellen kann.
würde mich freuen wenn mir jemand behilflich sein kann.
-
ich probiers mal, aber ohne garantie:
float a = (float)rand() / RAND_MAX * 10; //zufallszahl zwischen 0 und 10 float x = a * a; //quadrieren, um mehr kleinere Zahlen zu erhalten. Das kann zu Genauigkeitsverlusten führen!geloescht
-
bei dieser methode gibt es viele kommazahlen wenn ich as richtig. ich benötige nach möglichkeit nur ganze zahlen.
-
Oder erzeuge mehrere Zufallszahlen und nimm das Minimum.
Dann kannst du auch anhand der Anzahl der temporären Zahlen etwas steuern,
wieviel wahrscheinlicher eine kleine Zahl sein soll.Jockel
-
...
-
ich werde es gleich mal so probieren...
-
Boost.Random kann das alles und ist nicht so C.
-
wenn du ganze zahlen willst, dann nimm den datentyp int statt float, dann schneidet er meines wissens nach die stellen hinter dem komma einfach ab, ansonsten müsste es aber fehlerfrei funzen. falls nciht, gibt es die möglichkeit einen datentyp bei der ausgabe zu ändern. bin mir net sicher, aber in etwa so müsste das dann aussehen: (habe einfach mal ein Beispiel gemacht, kannst ja auf dein Prog dann übertragen).
float f=3; float g=2; cout << int f/g; // Ausgabe ist dann nicht 1.5, sondern 1 (er rundet net, sondern schneidet die Zahl ab);