PHP.mk документација

Random\Randomizer::nextFloat

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

random-randomizer.nextfloat.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека random-randomizer.nextfloat.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
Random\Randomizer::nextFloat

Референца за `random-randomizer.nextfloat.php` со подобрена типографија и навигација.

random-randomizer.nextfloat.php

Random\Randomizer::nextFloat

(PHP 8 >= 8.3.0)

Random\Randomizer::nextFloatДобијте пловечки број од десниот отворен интервал [0.0, 1.0)

= NULL

public function Random\Randomizer::nextFloat(): float

Враќа униформно избран, еквидистрибуиран пловечки број од десниот отворен интервал од 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

Примери

Пример #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

Белешки од корисници

Нема белешки од корисници за оваа страница.
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.