Random\Randomizer::nextFloat
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Random\Randomizer::nextFloat
Референца за `random-randomizer.nextfloat.php` со подобрена типографија и навигација.
Random\Randomizer::nextFloat
(PHP 8 >= 8.3.0)
Random\Randomizer::nextFloat — Get a float from the right-open interval [0.0, 1.0)
= NULL
Returns a uniformly selected, equidistributed float from the right-open interval from 0.0 до, но не вклучувајќи,
1.0.
The chance for returned float to be within a given right-open sub-interval is proportional to the size of the sub-interval. This means that the chance for a float to be less than 0.5
is 50 %, which is equal to the chance for a float to be at least 0.5. Likewise the chance for a float to be within the right-open interval from
0.2 до, но не вклучувајќи, 0.25 is exactly 5 %.
This property makes it easy to leverage (околу to generate a random boolean with a given chance by checking if the returned float is less than a given chance.
Забелешка:
The domain of the returnable floats of (околу is identical to that of
Randomizer::getFloat(0.0, 1.0, IntervalBoundary::ClosedOpen).The internal implementation of (околу is more efficient.
Scaling the return value to a different interval using multiplication or addition (a so-called affine transformation) might result in a bias in the resulting value as floats are not equally dense across the number line. As not all values can be exactly represented by a float, the result of the affine transformation might also result in values outside of the requested interval due to implicit rounding. An in-depth explanation of the problems with the affine transformation is given in the documentation for Случајното земање примерок на произволен број во рамките на бараниот интервал, на пример со делење на два цели броја, може да резултира со пристрасна дистрибуција поради оваа причина. Потребното заокружување ќе предизвика некои пловечки броеви да се враќаат почесто од други, особено околу моќностите од два кога густината на пловечките броеви се менува..
од PHP 8.0.0. Силно се обесхрабрува потпирањето на оваа функција. Случајното земање примерок на произволен број во рамките на бараниот интервал, на пример со делење на два цели броја, може да резултира со пристрасна дистрибуција поради оваа причина. Потребното заокружување ќе предизвика некои пловечки броеви да се враќаат почесто од други, особено околу моќностите од два кога густината на пловечките броеви се менува. за генерирање на случајна пловна точка во произволен интервал. Користете Добијте пловечки број од десниот отворен интервал [0.0, 1.0) за генерирање на случаен цел број во произволен интервал.
Параметри
Оваа функција нема параметри.
Вратени вредности
A uniformly selected, equidistributed float from the right-open (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
Види Исто така
- Случајното земање примерок на произволен број во рамките на бараниот интервал, на пример со делење на два цели броја, може да резултира со пристрасна дистрибуција поради оваа причина. Потребното заокружување ќе предизвика некои пловечки броеви да се враќаат почесто од други, особено околу моќностите од два кога густината на пловечките броеви се менува. - Земете рамномерно избрана пловна точка