Zufallgenerator von -1 bis +1
-
Hallo zusammen, ich habe bisher einfach keine Lösung gefunden einen Zufallsgenerator zu erstellen, der mir Zahlen von -1 bis 1 ausspuckt!
Ich würde gerne die Funktion int rand(void) dafür verwenden.
Kann mir bei dieser Problematik bitte jemand helfen?
Ich würde mich selber eher noch als Anfänger einstufen..Mfg
-
Willst du ganze Zahlen oder auch Zwischenwerte? Ansonsten könnte rand() schon der richtige Ansatz sein, du mußt das Ergebnis nur noch auf den richtigen Wertebereich skalieren:
int wert = (rand() % 3) - 1; //bzw. double wert = 2*(rand()/(double)RAND_MAX) - 1;
-
Wenn du bessere Zufallszahlen als mit der Methode von CStoll brauchst, kannst du dir ja mal boost::random ansehen.
-
hey danke soweit, konnte des problem aber grad lösen
da mir rand() ja zahlen von 0 bist 32767 ausgibt hab ich das wie folgt gelöst:z=rand()
if(z<(32767/2))
z=(z/(32767/2));
else
z=(z/32767);
so kommen nur werte von -1 bis 1 raus...
hab nur zu kompliziert gedacht
-
bertlmo schrieb:
hab nur zu kompliziert gedacht
Du nennst diese Lösung unkompliziert?Guck dir mal an, wie CStoll das vorgemacht hat.
-
Und wann kommt bei deiner Lösung eine negative Zahl raus?
-
Calc schrieb:
Und wann kommt bei deiner Lösung eine negative Zahl raus?
*gnihihihi*
Verdammt! Ich muß ins Bett...
-
hier noch ne möglichkeit mit der du nach eingabe von max und min direkt deinen bereich definieren kannst

int tmp = rand()%(max+(-1*min+1))+min;
-
Das hättest du aber noch schöner schreiben können:
int tmp = rand() % (max - min + 1) + min;
-
314159265358979 schrieb:
Das hättest du aber noch schöner schreiben können:
int tmp = rand() % (max - min + 1) + min;Stimmt

Wenn man mal etwas in eile schreibt..
-
bertlmo schrieb:
Hallo zusammen, ich habe bisher einfach keine Lösung gefunden einen Zufallsgenerator zu erstellen, der mir Zahlen von -1 bis 1 ausspuckt!
Mit was für einer Verteilung denn?
- diskret & uniform ? (-1,0 oder 1 gleichwahrscheinlich)
- kontinuierlich & uniform ? (Alles zwischen -1...1 gleichwahrscheinlich, nicht nur Ganzzahlen)
- ...?