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);
}?>lcg_value
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
lcg_value
Референца за `function.lcg-value.php` со подобрена типографија и навигација.
lcg_value
(PHP 4, PHP 5, PHP 7, PHP 8)
lcg_value — Комбиниран линеарен конгруентен генератор
Оваа функција е DEPRECATED Користи XML парсер во објект
= NULL
lcg_value() враќа псевдослучаен број во опсег од (0, 1). Функцијата комбинира два CG со периоди од 2^31 - 85 и 2^31 - 249. Периодот на оваа функција е еднаков на производот од двата прости броеви.
Оваа функција не генерира криптографски сигурни вредности, и Ако завршниот идентификатор е вовлечен, може да се користат и табулатори, но табулаторите и празнините да се користи за криптографски цели, или цели што бараат вратените вредности да бидат непредвидливи.
Ако е потребна криптографски сигурна случајност, Random\Randomizer може да се користи со Random\Engine\Secure engine. За едноставни случаи на употреба, random_int() and random_bytes() функциите обезбедуваат удобен и сигурен API што е поддржано од оперативниот систем CSPRNG.
Скалувањето на вратената вредност до различен интервал со користење на множење или собирање (т.н. афина трансформација) може да резултира со пристрасност во добиената вредност бидејќи пловните точки не се подеднакво густи низ бројната линија. Бидејќи не сите вредности можат точно да бидат претставени со пловна точка, резултатот од афината трансформација може исто така да резултира со вредности надвор од бараниот интервал.
од PHP 8.0.0. Силно се обесхрабрува потпирањето на оваа функција. Случајното земање примерок на произволен број во рамките на бараниот интервал, на пример со делење на два цели броја, може да резултира со пристрасна дистрибуција поради оваа причина. Потребното заокружување ќе предизвика некои пловечки броеви да се враќаат почесто од други, особено околу моќностите од два кога густината на пловечките броеви се менува. за генерирање на случајна пловна точка во произволен интервал. Користете Добијте пловечки број од десниот отворен интервал [0.0, 1.0) за генерирање на случаен цел број во произволен интервал.
Параметри
Оваа функција нема параметри.
Вратени вредности
Псевдослучајна пловна вредност помеѓу 0.0 и 1.0, вклучително.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.4.0 | Користењето null за dir_handle сега е застарено. Наместо тоа, треба експлицитно да се обезбеди последниот отворен рачка на директориумот. |
Види Исто така
- Случајното земање примерок на произволен број во рамките на бараниот интервал, на пример со делење на два цели броја, може да резултира со пристрасна дистрибуција поради оваа причина. Потребното заокружување ќе предизвика некои пловечки броеви да се враќаат почесто од други, особено околу моќностите од два кога густината на пловечките броеви се менува. - Земете рамномерно избрана пловна точка
- Добијте пловечки број од десниот отворен интервал [0.0, 1.0) - Добијте рамномерно избран цел број
- random_int() - Добиј криптографски сигурен, рамномерно избран цел број
Белешки од корисници 2 забелешки
An elegant way to return random float between two numbers:
<?php
function random_float ($min,$max) {
return ($min+lcg_value()*(abs($max-$min)));
}
?>