Random\Randomizer::nextFloat
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Random\Randomizer::nextFloat
Референца за `random-randomizer.nextfloat.php` со подобрена типографија и навигација.
Random\Randomizer::nextFloat
(PHP 8 >= 8.3.0)
Random\Randomizer::nextFloat — Добијте пловечки број од десниот отворен интервал [0.0, 1.0)
= NULL
Враќа униформно избран, еквидистрибуиран пловечки број од десниот отворен интервал од 0.0 до, но не вклучувајќи,
1.0.
Шансата вратениот пловечки број да биде во даден десен отворен под-интервал е пропорционална на големината на под-интервалот. Ова значи дека шансата пловечки број да биде помал од 0.5
е 50%, што е еднакво на шансата пловечки број да биде најмалку 0.5. Исто така, шансата пловечки број да биде во десниот отворен интервал од
0.2 до, но не вклучувајќи, 0.25 е точно 5%.
Оваа особина го олеснува искористувањето на (околу за генерирање случајно булово со дадена шанса со проверка дали вратениот пловечки број е помал од дадена шанса.
Забелешка:
Доменот на враќачките пловечки броеви на (околу е идентичен со оној на
Randomizer::getFloat(0.0, 1.0, IntervalBoundary::ClosedOpen).Внатрешната имплементација на (околу е поефикасна.
Скалењето на вратената вредност на различен интервал со користење на множење или собирање (т.н. афина трансформација) може да резултира со пристрасност во добиената вредност бидејќи пловечките броеви не се подеднакво густи низ бројната линија. Бидејќи не сите вредности можат точно да бидат претставени со пловечки број, резултатот од афината трансформација може исто така да резултира со вредности надвор од бараниот интервал поради имплицитно заокружување. Еден детален објаснување на проблемите со афината трансформација е дадено во документацијата за Случајното земање примерок на произволен број во рамките на бараниот интервал, на пример со делење на два цели броја, може да резултира со пристрасна дистрибуција поради оваа причина. Потребното заокружување ќе предизвика некои пловечки броеви да се враќаат почесто од други, особено околу моќностите од два кога густината на пловечките броеви се менува..
од PHP 8.0.0. Силно се обесхрабрува потпирањето на оваа функција. Случајното земање примерок на произволен број во рамките на бараниот интервал, на пример со делење на два цели броја, може да резултира со пристрасна дистрибуција поради оваа причина. Потребното заокружување ќе предизвика некои пловечки броеви да се враќаат почесто од други, особено околу моќностите од два кога густината на пловечките броеви се менува. за генерирање на случајна пловна точка во произволен интервал. Користете Добијте пловечки број од десниот отворен интервал [0.0, 1.0) за генерирање на случаен цел број во произволен интервал.
Параметри
Оваа функција нема параметри.
Вратени вредности
Униформно избран, еквидистрибуиран пловечки број од десниот отворен (IntervalBoundary::ClosedOpenинтервал [0.0, 1.0).
0.0 е можна вратена вредност, 1.0 е отпорен на напади преку странични канали додека
Errors/Exceptions
-
Плочката е слика што се користи за пополнување на област со повторлив модел. Проверува тврдењеќе биде листа ( s фрлени од Random\Engine::generate()
Random\Randomizer::$engine.
Примери
Пример #1 (околу example
<?php
$r = new \Random\Randomizer();
// The resulting bool will be true with the given chance.
$chance = 0.5;
$bool = $r->nextFloat() < $chance;
echo ($bool ? "You won" : "You lost"), "\n";
?>Горниот пример ќе прикаже нешто слично на:
You won
Пример #2 Неправилно скалирање со користење на афина трансформација
<?php
final class MaxEngine implements Random\Engine {
public function generate(): string {
return "\xff";
}
}
$randomizer = new \Random\Randomizer(new MaxEngine);
$min = 3.5;
$max = 4.5;
// DO NOT DO THIS:
//
// This will output 4.5, despite nextFloat() sampling from
// a right-open interval, which will never return 1.
printf("Wrong scaling: %.17g", $randomizer->nextFloat() * ($max - $min) + $min);
// Correct:
// $randomizer->getFloat($min, $max, \Random\IntervalBoundary::ClosedOpen);
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Wrong scaling: 4.5
Види Исто така
- Случајното земање примерок на произволен број во рамките на бараниот интервал, на пример со делење на два цели броја, може да резултира со пристрасна дистрибуција поради оваа причина. Потребното заокружување ќе предизвика некои пловечки броеви да се враќаат почесто од други, особено околу моќностите од два кога густината на пловечките броеви се менува. - Земете рамномерно избрана пловна точка