Existe-t-il un moyen de générer un nombre aléatoire basé sur un min et un max? Par exemple, si min était de 1 et de 20 au maximum, il devrait générer n'importe quel nombre entre 1 et 20, y compris 1 et 20?Nombre aléatoire dans la plage [min - max] en utilisant PHP
Répondre
<?php
$min=1;
$max=20;
echo rand($min,$max);
?>
Je pensais que min et max pour rand était le nombre de chiffres à utiliser à la place des nombres :) thnx – Val
Connexes: si 'PHP_INT_MAX <($ max- $ min) ', vous devez ajouter des intervalles ensemble, comme décrit dans [cette réponse] (http://stackoverflow.com/questions/31252637/what-is-phps-mt-rand-minimum-value-and- comment-calculer-32-bit-interger-sur-32). – bishop
rand(1,20)
Docs pour la fonction rand de PHP sont ici:
http://php.net/manual/en/function.rand.php
Utilisez la fonction srand()
pour définir la valeur de départ du générateur de nombres aléatoires.
Une version plus rapide
plus rapide
utiliserait mt_rand:
$min=1;
$max=20;
echo mt_rand($min,$max);
Source: http://www.php.net/manual/en/function.mt-rand.php.
REMARQUE: Votre serveur doit avoir le module Math Math activé pour que cela fonctionne. Si ce n'est pas le cas, boguez votre hôte pour l'activer, ou vous devez utiliser le rand normal (et plus lent).
vous voulez dire plus vite non? la différence est (en tapant == plus rapide vs plus rapide == performance sage) – Val
Oui, plus vite. Correction valide –
Essayez celui-ci. Il va générer l'identifiant selon votre souhait.
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;
}
Dans une nouvelle PHP7 il y a un enfin un support pour une cryptographically secure pseudo-random integers.
int random_int (int $min , int $max)
random_int - Génère cryptographiquement sécurisés entiers pseudo-aléatoires
qui fait essentiellement des réponses précédentes obsolètes .
C'est génial! Mais jusqu'à ce que les hébergeurs supportent PHP7 plus globalement, ceci n'est pas utile pour quiconque construit des produits pour la distribution malheureusement.Donc, les réponses précédentes qui travaillent également sur PHP7 sont toujours les meilleures pratiques. –
@MattCromwell. Je ne suis pas d'accord avec toi. Jusqu'à l'hébergement des services de support PHP7, nous devrions utiliser polyfill pour la fonction 'random_int' et' random_bytes' - https://github.com/paragonie/random_compat. –
Je suis curieux, y a-t-il une raison de ne PAS utiliser 'random_int '? Si cela donne de "meilleurs" nombres aléatoires, pourquoi ne pas l'utiliser pour des raisons non-crypto? –
J'ai regroupé les réponses ici et l'ai rendu indépendant de la version;
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
}
- 1. Produire un nombre aléatoire dans une plage en utilisant C#
- 2. Java: Min et Max Plage de dates
- 3. flotilla: valeurs spécifiques min/max pour la plage de dates
- 4. Spécifiez max et min pour Random.nextInt()?
- 5. Valeurs MAX et MIN sur le tableau utilisant PHP
- 6. Créer un nombre pair aléatoire entre plage
- 7. texte au nombre aléatoire
- 8. Javascript chèque de Max/Min/Nombre moyen d'un record établi
- 9. R: vecteurs d'indexation par comparaison booléenne d'une valeur dans la plage: indice == c (min: max)
- 10. Linq (MIN MAX &&)
- 11. Min Max-assorti Problème
- 12. HQL Min Max, comment
- 13. génération de nombre aléatoire
- 14. trouver min et max
- 15. groupe SQL min/max en question
- 16. comment tirer et afficher les données de plage (min-max) pour chaque page en pagination?
- 17. Chaîne d'analyse contenant une plage de valeurs pour les variables min et max
- 18. Valeurs absolues min/max élégantes dans Java
- 19. Max et Min Temps requête
- 20. MYSQL MAX et min QUERY
- 21. x86 instructions asm max/min?
- 22. chaîne contenant Parse plage de valeurs min et max des variables v2
- 23. Problèmes d'invalidation de l'arbre min-max en place
- 24. php max() et min() sur un tableau associatif
- 25. toutes les lignes plus les valeurs min/max en utilisant une seule procédure stockée
- 26. SELECT tout N entre @min et @max
- 27. Code Shortest pour calculer la liste min/max dans .NET
- 28. Nombre aléatoire
- 29. Sélection Tri - Index de Min/Max
- 30. MySQL: Comptez le nombre d'éléments dans une plage
La nouvelle version de php possède un [générateur de nombres aléatoires] cryptographiquement sécurisé (http://stackoverflow.com/a/31421151/1090562). –
Pour PHP 7+, utilisez 'random_int()', 'random_bytes()', ou 'openssl_random_pseudo_bytes()'. comme le dit @Salvador Dali 'rand()' ne génère pas de résultats cryptographiquement sécurisés. Voir documentation http://php.net/manual/fr/function.rand.php – FrozenFire