Ce face rand / mt_rand
rand și mt_rand returnează un număr întreg între $min și $max, inclusiv. Din PHP 7.1, rand este doar un alt nume pentru mt_rand. Fără parametri, returnează un număr între 0 și mt_getrandmax().
Numerele sunt „pseudo-aleatorii”: cu aceeași valoare de pornire (mt_srand) obții mereu același șir. Este util la teste, dar înseamnă că nu sunt potrivite pentru securitate. Pentru coduri și parole folosește random_int.
Parametri
| Parametru | Descriere |
|---|---|
$min |
Cea mai mică valoare posibilă. |
$max |
Cea mai mare valoare posibilă. |
Ce returnează
Un număr întreg aleatoriu.
Exemple
Exemplul 1: Zar și culoare la întâmplare
Rezultatul diferă la fiecare rulare.
<?php
echo "Zar: " . mt_rand(1, 6) . "\n";
echo "Culoare: rgb(" . rand(0, 255) . ", " . rand(0, 255) . ", " . rand(0, 255) . ")";
Rezultat posibil (diferă la fiecare rulare)
Zar: 5
Culoare: rgb(34, 187, 92)
Exemplul 2: Același șir cu aceeași valoare de pornire
După mt_srand(42), șirul de numere este mereu același, pe orice server.
<?php
mt_srand(42);
$primul = [mt_rand(1, 100), mt_rand(1, 100), mt_rand(1, 100)];
mt_srand(42);
$alDoilea = [mt_rand(1, 100), mt_rand(1, 100), mt_rand(1, 100)];
var_dump($primul === $alDoilea);
Rezultat
bool(true)
Greșeli frecvente
- Generezi coduri de resetare a parolei cu
randsaumt_rand. Un atacator le poate ghici. Foloseșterandom_intsaurandom_bytes. - Dai
$minmai mare decât$max. În PHP 8 primeștiValueErrorlamt_rand.
Comenzi înrudite
random_int: Generează un număr întreg aleatoriu, sigur, între două valori.array_rand: Alege una sau mai multe chei la întâmplare dintr-un tablou.shuffle: Amestecă elementele unui tablou într-o ordine aleatorie.