Maison > Article > développement back-end > Pratique des fonctions mathématiques PHP 5 : obtenir des nombres à virgule flottante aléatoires
Aujourd'hui, nous continuerons à vous proposer le contenu de la série de pratiques sur les fonctions mathématiques PHP, qui vous a été présentée dans l'article précédent "Pratique 4 sur les fonctions mathématiques PHP : arrondir les nombres à virgule flottante de zéro au nombre spécifié de décimales" Les amis dans le besoin peuvent apprendre à arrondir un nombre à virgule flottante de zéro à un nombre spécifié de décimales~
Le thème de cet article est de vous apprendre à écrire une fonction PHP pour obtenir un nombre à virgule flottante aléatoire.
Tout d'abord, permettez-moi de vous donner une brève introduction à ce que sont les nombres à virgule flottante. Les nombres à virgule flottante sont également appelés nombres à double précision ou nombres réels. Ils peuvent être définis en PHP en utilisant l'une des syntaxes suivantes :
<?php $a = 1.234; $b = 1.2e3; $c = 7E-10; $d = 1_234.567; // 从 PHP 7.4.0 开始支持 ?>
. Je vais maintenant présenter directement la méthode d'implémentation pour obtenir des nombres à virgule flottante aléatoires :
L'exemple de code PHP est le suivant :
<?php function rand_float($st_num=0,$end_num=1,$mul=1000000) { if ($st_num>$end_num) return false; return mt_rand($st_num*$mul,$end_num*$mul)/$mul; } echo rand_float()."<br>"; echo rand_float(0.6)."<br>"; echo rand_float(0.5,0.6)."<br>"; echo rand_float(0,20)."<br>"; echo rand_float(0,3,2)."<br>"; echo rand_float(0,2,20)."<br>"; ?>
Le résultat de sortie est :
0.353804 0.715058 0.598421 13.484704 0.5 1.4
L'effet de l'opération de rafraîchissement est le suivant :
Comme indiqué ci-dessus, nous pouvons obtenir des nombres aléatoires à virgule flottante.
Ici, je vous présente une fonctionmt_rand
fonction :
La fonction mt_rand() utilise l'algorithme Mersenne Twister pour générer des entiers aléatoires.
Cette fonction est un meilleur choix pour générer des valeurs aléatoires, renvoyant des résultats 4 fois plus rapidement que la fonction rand() ; si vous voulez un entier aléatoire entre 10 et 100 (inclus), utilisez mt_rand(10,100).
La syntaxe est la suivante :
mt_rand(); or mt_rand(min,max);
La valeur de retour est un entier aléatoire compris entre min (ou 0) et max (ou mt_getrandmax()) (y compris les valeurs limites). Si max < min renvoie FALSE.
注:浮点数的精度 浮点数的精度有限。尽管取决于系统,PHP 通常使用 IEEE 754 双精度格式,则由于取整而导致的最大相对误差为 1.11e-16。非基本数学运算可能会给出更大误差,并且要考虑到进行复合运算时的误差传递。 此外,以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118...。 所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
La plate-forme de site Web PHP chinois propose de nombreuses ressources pédagogiques vidéo. Bienvenue à tous pour apprendre le "Tutoriel vidéo PHP" !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!