Gibt es eine Möglichkeit, eine Zufallszahl basierend auf Min und Max zu generieren?
Wenn beispielsweise min 1 und max 20 war, sollte eine beliebige Zahl zwischen 1 und 20 generiert werden, einschließlich 1 und 20?
Gibt es eine Möglichkeit, eine Zufallszahl basierend auf Min und Max zu generieren?
Wenn beispielsweise min 1 und max 20 war, sollte eine beliebige Zahl zwischen 1 und 20 generiert werden, einschließlich 1 und 20?
random_int()
, random_bytes()
oder openssl_random_pseudo_bytes()
. Wie @Salvador Dali sagte rand()
, generieren Sie keine kryptografisch sicheren Ergebnisse. Siehe Dokumentation php.net/manual/en/function.rand.php
Antworten:
<?php
$min=1;
$max=20;
echo rand($min,$max);
?>
PHP_INT_MAX < ($max-$min)
, müssen Sie Intervalle addieren, wie in dieser Antwort beschrieben .
In einem neuen PHP7 gibt es endlich eine Unterstützung für eine kryptografisch sichere Pseudozufallszahl.
int random_int ( int $min , int $max )
random_int - Erzeugt kryptografisch sichere pseudozufällige Ganzzahlen
was im Grunde frühere Antworten überflüssig macht.
random_int
und random_bytes
Funktion verwenden - github.com/paragonie/random_compat .
random_int
? Wenn es "bessere" Zufallszahlen gibt, warum nicht aus Nicht-Krypto-Gründen?
random_int
s in rand
s zu ändern . Außerdem ist mein Anwendungsfall ein Wiederholungsalgorithmus, und ich möchte definitiv nicht, dass mehrere fehlgeschlagene Funktionen nach dem Schlafen wegen vorhersehbarer zufälliger Ints zusammenklumpen
Eine schnellere schnellere Version verwenden würde mt_rand:
$min=1;
$max=20;
echo mt_rand($min,$max);
Quelle: http://www.php.net/manual/en/function.mt-rand.php .
HINWEIS: Auf Ihrem Server muss das Math PHP-Modul aktiviert sein, damit dies funktioniert. Wenn dies nicht der Fall ist, überprüfen Sie Ihren Host, um ihn zu aktivieren, oder Sie müssen den normalen (und langsameren) rand () verwenden.
Ich habe die Antworten hier gebündelt und die Version unabhängig gemacht.
function generateRandom($min = 1, $max = 20) {
if (function_exists('random_int')):
return random_int($min, $max); // more secure
elseif (function_exists('mt_rand')):
return mt_rand($min, $max); // faster
endif;
return rand($min, $max); // old
}
rand(1,20)
Dokumente für die Rand-Funktion von PHP finden Sie hier:
http://php.net/manual/en/function.rand.php
Verwenden Sie die srand()
Funktion, um den Startwert des Zufallszahlengenerators festzulegen.
Probier diese. Es wird eine ID gemäß Ihrem Wunsch generiert.
function id()
{
// add limit
$id_length = 20;
// add any character / digit
$alfa = "abcdefghijklmnopqrstuvwxyz1234567890";
$token = "";
for($i = 1; $i < $id_length; $i ++) {
// generate randomly within given character/digits
@$token .= $alfa[rand(1, strlen($alfa))];
}
return $token;
}