Suche…


Zufallszahl zwischen 0 und 1

Math.random();

erzeugt eine gleichmäßig verteilte Zufallszahl zwischen 0 (inklusive) und 1 (exklusiv)

Beispielausgabe:

  • 0.22282187035307288
  • 0,3948539895936847
  • 0,9987191134132445

Zufallszahl zwischen min und max

function randomMinMax(min:Number, max:Number):Number {
    return (min + (Math.random() * Math.abs(max - min)));
}

Diese Funktion wird durch Übergeben eines Bereichs von Minimal- und Maximalwerten aufgerufen.

Beispiel:

randomMinMax(1, 10);

Beispielausgaben:

  • 1.661770915146917
  • 2.5521070677787066
  • 9.436270965728909

Zufälliger Winkel in Grad

function randomAngle():Number {
    return (Math.random() * 360);
}

Beispielausgaben:

  • 31.554428357630968
  • 230.4078639484942
  • 312.7964010089636

Zufälliger Wert aus einem Array

Angenommen, wir haben ein Array myArray :

var value:* = myArray[int(Math.random() * myArray.length)];

Hinweis: Wir verwenden int , um das Ergebnis von Math.random() in ein int 2.4539543 da Werte wie 2.4539543 keinen gültigen 2.4539543 .

Zufälliger Punkt innerhalb eines Kreises

Definieren Sie zuerst den Kreisradius und seinen Mittelpunkt:

var radius:Number = 100;
var center:Point = new Point(35, 70);

Dann generieren Sie einen zufälligen Winkel im Bogenmaß von der Mitte:

var angle:Number = Math.random() * Math.PI * 2;

Dann generieren Sie einen effektiven Radius des zurückgegebenen Punkts, damit dieser innerhalb des angegebenen radius . Ein einfacher Math.random()*radius ist nicht Math.random()*radius , da bei dieser Verteilung die produzierten Punkte zur Hälfte der Zeit im inneren Kreis des halben Radius enden, das Quadrat dieses Kreises jedoch ein Viertel des Originals ist. Um eine korrekte Verteilung zu erstellen, sollte die Funktion folgendermaßen aussehen:

var rad:Number=(Math.random()+Math.random())*radius; // yes, two separate calls to random
if (rad>radius) { rad=2*radius-rad; }

Diese Funktion erzeugt einen Wert, dessen Wahrscheinlichkeitsfunktion linear von 0 bei Null bis zum Maximum am radius ansteigt. Dies geschieht, weil eine Summe von Zufallswerten eine Wahrscheinlichkeitsdichtefunktion aufweist, die gleich der Faltung aller einzelnen Dichtefunktionen der Zufallswerte ist. Dies ist eine erweiterte Mathematik für eine Durchschnittsperson, aber eine Art GIF wird dargestellt, um eine Kurve der Faltungsfunktion von zwei gleichförmigen Verteilungsdichtefunktionen zu zeichnen, die als " Box-Signale " erklärt werden. Der if Operator faltet die resultierende Funktion über ihr Maximum, sodass nur ein sägezahnförmiger Graph übrig bleibt.

Diese Funktion wird ausgewählt, weil das Quadrat eines Kreisstreifens zwischen radius=r und radius=r+dr linear mit zunehmendem r und sehr kleiner Konstante dr ansteigt, so dass dr*dr<<r . Daher ist die Menge von Punkten, die nahe in der Mitte erzeugt werden, um denselben Rand kleiner als die Anzahl von Punkten, die an der Kante des Kreises erzeugt werden, da der Radius des Mittelpunkts kleiner ist als der Radius des gesamten Kreises. Insgesamt sind die Punkte also gleichmäßig über den gesamten Kreis verteilt.

Holen Sie sich jetzt Ihre zufällige Position:

var result:Point = new Point(
    center.x + Math.cos(angle) * rad,
    center.y + Math.sin(angle) * rad
);

Um einen zufälligen Punkt auf dem Kreis (am Rand des Kreises eines gegebenen Radius) zu erhalten, verwenden Sie den radius anstelle von rad .

PS: Das Beispiel wurde durch die Erklärung der Mathematik überlastet.

Zufälliger Winkel, im Bogenmaß

function randomAngleRadians():Number
{
    return Math.random() * Math.PI * 2;
}

Beispielausgaben:

  • 5.490068569213088
  • 3.1984284719180205
  • 4.581117863808207

Ermittlung des Erfolgs einer "Prozent-Chance" -Operation

Wenn Sie in einer Situation mit "x% chance" für true oder false rollen müssen, verwenden Sie:

function roll(chance:Number):Boolean {
    return Math.random() >= chance;
}

Verwendet wie:

var success:Boolean = roll(0.5); // True 50% of the time.
var again:Boolean = roll(0.25); // True 25% of the time.

Erstellen Sie eine zufällige Farbe

Um eine zufällige Farbe zu erhalten:

function randomColor():uint
{
    return Math.random() * 0xFFFFFF;
}

Wenn Sie mehr Kontrolle über die roten, grünen und blauen Kanäle benötigen:

var r:uint = Math.random() * 0xFF;
var g:uint = Math.random() * 0xFF;
var b:uint = Math.random() * 0xFF;

var color:uint = r << 16 | g << 8 | b;

Hier können Sie Ihren eigenen Bereich für r , g und b angeben (dieses Beispiel ist von 0 bis 255).

Zufällig durch das Alphabet blättern

var alphabet:Vector.<String> = new <String>[ "A", "B", "C", "D", "E", "F", "G",
                                             "H", "I", "J", "K", "L", "M", "N",
                                             "O", "P", "Q", "R", "S", "T", "U",
                                             "V", "W", "X", "Y", "Z" ];

while (alphabet.length > 0)
{
    var letter:String = alphabet.splice(int(Math.random() *
                                            alphabet.length), 1)[0];
    trace(letter);
}

Beispielausgabe:

V, M, F, E, D, U, S, L, X, K, A, I, W, N, P, Y, J, C, O, R, G, B Z

Zufällige Anordnung eines Arrays

var alphabet:Array = [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ];

for (var i:int=alphabet.length-1;i>0;i--) {
    var j:int=Math.floor(Math.random()*(i+1));
    var swap=alphabet[j];
    alphabet[j]=alphabet[i];
    alphabet[i]=swap;
}
trace(alphabet);    

Beispielausgabe

B, Z, D, R, U, N, O, M, I, L, C, J, P, H, W, S, Q, E, K, F, V, X, Y, G, EIN

Diese Methode ist als Fisher-Yates-Array-Shuffle bekannt .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow