• Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
  • Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
  • Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.

Zufallszahl genauer festlegen +/-

Kaya Kiyori

Freund/in des Forums
In meinem aktuellen Projekt arbeite ich an einer Stelle mit der llFrand()-Funktion.

Die folgenden Float Parameter sollten ja bekannt sein:
llFrand(MAX-MIN)+MAX

Mein Problem ist jedoch das ich den Minus Bereich, wie auch den Plus Bereich abdecken möchte und dementsprechend zwischen -1 bis +1 die Zahl ermitteln lasse. (1 ist nur ein Beispiel, könnte auch 2, 23 oder so sein)

Aber wirklich so ein großes Spektrum möchte ich gar nicht abdecken. Eigentlich möchte ich nur in meinem Beispiel folgende Bereiche:
0.5 bis 1.0
-0.5 bis -1.0
Nun ich könnte dies sicherlich mit einer Funktion realisieren, die anhand eines Zufälligen True oder False entsprechend, ein llFrand in einem der beiden Bereiche ausführt.

Jedoch frage ich mich ob es noch eine kürzere saubere Möglichkeit dafür gibt oder ob llFrand() wirklich so beschränkt ist?
 
llFrand ist leider bisschen beschränkt in der Leistung bzw. in der Verteilung.

Das Problem ist, dass llFrand(float x) immer nur ein einen Float im Intervall [0,x) liefert. D.h. 0 <= Zufallszahl < x.
Und wenn du nun x wirklich mit in die Ergebnisse aufnehmen willst, dann musst du (wegen der "Körnigkeit" der Floats) eigentlich den Intervall [0, x + 1.175494351E-38 ) nehmen, da 1.175494351E-38 die kleinstmögliche Float Zahl in LSL ist. Aber für die meisten praktischen Zwecke in SL reicht einfach llFrand(x).

Statt der True/False Funktion kann man dann auch einfach eine Funktion basteln, die so lange eine Zufallszahl zwischen -1 und 1 wählt, bis sie nicht mehr im von dir unerwünschten Intervall liegt.

Code:
float Zufallszahl()
{
    float z;
    do z = llFrand(2.0) -1;
    while ((z < 0.5)&&(z > -0.5));
    return z;
}
 

Users who are viewing this thread

Zurück
Oben Unten