PHP Conference Japan 2024

lcg_value

(PHP 4, PHP 5, PHP 7, PHP 8)

lcg_valueGénérateur de congruence combinée linéaire

Avertissement

Cette fonction est OBSOLÈTE à partir de PHP 8.4.0. Il est fortement déconseillé de s'appuyer sur cette fonction.

Description

lcg_value(): float

lcg_value() retourne un nombre pseudo aléatoire, compris entre 0 et 1. lcg_value() combine deux générateurs de congruence, de périodes respectives 2^31 - 85 et 2^31 - 249. La période de cette fonction est le produit de ces deux nombres premiers (soit (2^31 - 85)*(2^31 - 249)).

Attention

Cette fonction ne génère pas de valeurs cryptographiquement sûres, et ne doit pas être utilisée à des fins cryptographiques, ou à des fins qui exigent que les valeurs renvoyées soient indéchiffrables.

Si de l'aléatoire cryptographiquement sûre est requis, le Random\Randomizer peut être utilisé avec le moteur Random\Engine\Secure. Pour des cas d'usage simple, les fonctions random_int() et random_bytes() fournissent une API pratique et sûre qui est qui est soutenu par le CSPRNG du système d'exploitation.

Attention

Mettre à l'échelle la valeur de retour vers un intervalle différent en utilisant la multiplication ou l'addition (une transformation affine) peut entraîner un biais dans la valeur résultante car les nombres flottants ne sont pas également répartis sur la ligne des nombres. Comme toutes les valeurs ne peuvent pas être exactement représentées par un nombre flottant, le résultat de la transformation affine peut également donner des valeurs en dehors de l'intervalle demandé.

Utilisez Random\Randomizer::getFloat() pour générer un nombre flottant aléatoire dans un intervalle arbitraire. Utilisez Random\Randomizer::getInt() pour générer un entier aléatoire dans un intervalle arbitraire.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Une valeur pseudo aléatoire, dans l'intervalle de 0.0 à 1.0 inclus.

Historique

Version Description
8.4.0 Cette fonction a été dépréciée.

Voir aussi

add a note

User Contributed Notes 2 notes

up
16
daniel dot baulig at gmx dot de
14 years ago
Choose your weapon:
<?php
function mt_randf($min, $max)
{
return
$min + abs($max - $min) * mt_rand(0, mt_getrandmax())/mt_getrandmax();
}
function
lcg_randf($min, $max)
{
return
$min + lcg_value() * abs($max - $min);
}
function
randf($min, $max)
{
return
$min + rand(0,getrandmax()) / getrandmax() * abs($max - $min);
}
?>
up
16
rok kralj gmail com
17 years ago
An elegant way to return random float between two numbers:

<?php
function random_float ($min,$max) {
return (
$min+lcg_value()*(abs($max-$min)));
}
?>
To Top