Random

Generiert eine pseudozufällige Zahl.

Random, AusgabeVar , Min, Max
Random, , NeuerSeed

Parameter

AusgabeVar

Name der Ausgabevariable, in der das Ergebnis gespeichert werden soll. Das Format von gespeicherten Floating-Point-Zahlen wird durch SetFormat bestimmt, sofern dessen langsamer Modus verwendet wird; andernfalls wirkt sich SetFormat nur auf die Formatierung aus, wenn die Zahl in eine Zeichenkette umgewandelt wird.

Min
Wenn leer oder weggelassen, wird standardmäßig 0 verwendet. Andernfalls geben Sie die kleinste generierbare Zahl an. Kann negativ, eine Floating-Point-Zahl oder ein Ausdruck sein. Der niedrigste zulässige Wert für Integer ist -2147483648. Floating-Point-Zahlen unterliegen keinen Einschränkungen.
Max

Wenn leer oder weggelassen, wird standardmäßig 2147483647 verwendet. Andernfalls geben Sie die größte generierbare Zahl an. Kann negativ, eine Floating-Point-Zahl oder ein Ausdruck sein. Der höchste zulässige Wert für Integer ist 2147483647. Floating-Point-Zahlen unterliegen keinen Einschränkungen.

NeuerSeed

Dieser Modus setzt den Zufallszahlengenerator unter Verwendung von NeuerSeed zurück, fachsprachlich Reseeding genannt. Dieser Parameter kann ein Ausdruck sein. Reseeding hat Einfluss auf alle danach generierten Zufallszahlen. NeuerSeed muss ein Integer zwischen 0 und 4294967295 (0xFFFFFFFF) sein. Reseeding kann die Qualität/Sicherheit der generierten Zufallszahlen verbessern, insbesondere wenn es sich bei NeuerSeed um eine echte Zufallszahl handelt, nicht um eine von minderer Qualität wie eine pseudozufällige Zahl. Normalerweise ist es nicht erforderlich, Reseeding mehr als einmal durchzuführen.

Wenn das Skript nie ein Reseeding durchführt, beginnt der Seed mit den niederwertigen 32 Bits des 64-Bit-Wertes, der die Anzahl der 100-Nanosekunden-Intervalle seit dem 1. Januar 1601 darstellt. Dieser Wert wandert alle ~7.2 Minuten von 0 bis 4294967295.

Bemerkungen

Dieser Befehl generiert eine pseudozufällige Zahl - also eine Zahl, die eine echte Zufallszahl vortäuscht, aber in Wirklichkeit auf Basis einer komplizierten Formel berechnet wurde, um das Bestimmen/Erraten der nächsten Zahl extrem zu erschweren.

Jede Zahl innerhalb des angegebenen Bereichs hat ungefähr die gleiche Chance, generiert zu werden (siehe aber "Bekannte Einschränkungen" weiter unten).

Wenn Min oder Max einen Dezimalpunkt enthält, ist das Endergebnis eine Floating-Point-Zahl im via SetFormat gesetzten Format. Andernfalls ist das Ergebnis ein Integer.

Bekannte Einschränkungen für Floating-Point: 1) Es können nur ca. 4294967296 eindeutige Zahlen für einen bestimmten Bereich generiert werden, folglich werden alle anderen Zahlen in dem Bereich nie generiert; 2) Gelegentlich kann ein Ergebnis geringfügig größer sein als der angegebene Max-Wert (dies ist zum Teil auf die Ungenauigkeit von Floating-Point-Zahlen zurückzuführen).

Format(), SetFormat

Beispiele

Generiert einen zufälligen Integer im Bereich von 1 bis 10 und speichert ihn in rand.

Random, rand, 1, 10

Generiert eine zufällige Floating-Point-Zahl im Bereich von 0.0 bis 1.0 und speichert sie in rand.

Random, rand, 0.0, 1.0

Kommentare aus dem originalen Quellcode

This function uses the Mersenne Twister random number generator, MT19937, written by Takuji Nishimura and Makoto Matsumoto, Shawn Cokus, Matthe Bellew and Isaku Wada.

The Mersenne Twister is an algorithm for generating random numbers. It was designed with consideration of the flaws in various other generators. The period, 219937-1, and the order of equidistribution, 623 dimensions, are far greater. The generator is also fast; it avoids multiplication and division, and it benefits from caches and pipelines. For more information see the inventors' web page at www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html

Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  3. The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Do NOT use for CRYPTOGRAPHY without securely hashing several returned values together, otherwise the generator state can be learned after reading 624 consecutive values.

When you use this, send an email to: m-mat@math.sci.hiroshima-u.ac.jp with an appropriate reference to your work.

Dies wurde bereits für AutoHotkey getan, aber wenn Sie den Random-Befehl in einer öffentlich zugänglichen Anwendung verwenden, sollten Sie der oben genannten Person eine E-Mail schicken, um sich zu bedanken.