PHP 8.5.0 Beta 3 available for testing

Random\Randomizer::nextFloat

(PHP 8 >= 8.3.0)

Random\Randomizer::nextFloat โ€” ๅŠ้–‹ๅŒบ้–“ [0.0, 1.0) ใ‹ใ‚‰ใ€float ใฎๅ€คใ‚’ๅ–ๅพ—ใ™ใ‚‹

่ชฌๆ˜Ž

public Random\Randomizer::nextFloat(): float

ๅŠ้–‹ๅŒบ้–“(ๅทฆ้–‰ๅณ้–‹) ใซไธ€ๆง˜ใซๅˆ†ๆ•ฃใ—ใŸ float ใ‚’็ญ‰็ขบ็އใซ่ฟ”ใ—ใพใ™ใ€‚ ๅŒบ้–“ใซใฏ 0.0 ใ‚’ๅซใฟใ€1.0 ใพใงใงใ™ใŒใ€ 1.0 ใใฎใ‚‚ใฎใฏๅซใฟใพใ›ใ‚“ใ€‚

่ฟ”ใ•ใ‚Œใ‚‹ float ใฎๅ€คใŒใ€ๆŒ‡ๅฎšใ•ใ‚ŒใŸๅณ้–‹ใฎ้ƒจๅˆ†ๅŒบ้–“ใซใ‚ใ‚‹็ขบ็އใฏใ€ ้ƒจๅˆ†ๅŒบ้–“ใฎๅคงใใ•ใซๆฏ”ไพ‹ใ—ใพใ™ใ€‚ ใคใพใ‚Šใ€่ฟ”ใ•ใ‚Œใ‚‹ float ใŒ 0.5 ใ‚ˆใ‚Šๅฐใ•ใ„ ็ขบ็އใฏ50%ใจใ„ใ†ใ“ใจใงใ™ใ€‚ใ“ใ‚Œใฏ float ใŒ ๅฐ‘ใชใใจใ‚‚ 0.5 ไปฅไธŠใงใ‚ใ‚‹็ขบ็އใจ็ญ‰ใ—ใใชใ‚Šใพใ™ใ€‚ ๅŒๆง˜ใซใ€่ฟ”ใ•ใ‚Œใ‚‹ float ใŒใ€ๅŒบ้–“ 0.2 ใ‹ใ‚‰ 0.25 ๆœชๆบ€ใพใงใซๅŽใพใ‚‹็ขบ็އใฏใ€ใกใ‚‡ใ†ใฉ 5% ใซใชใ‚Šใพใ™ใ€‚

ใ“ใฎๆ€ง่ณชใ‚’ไฝฟใ†ใจใ€Random\Randomizer::nextFloat() ใ‚’ๆดป็”จใ—ใฆ่ฟ”ใ•ใ‚Œใ‚‹ float ใŒๆŒ‡ๅฎšใ•ใ‚ŒใŸ็ขบ็އ ใ‚ˆใ‚Šๅฐใ•ใ„ ใ“ใจใ‚’ใƒใ‚งใƒƒใ‚ฏใ™ใ‚‹ใ“ใจใงใ€ ๆŒ‡ๅฎšใ•ใ‚ŒใŸ็ขบ็އใงใƒฉใƒณใƒ€ใƒ ใช boolean ๅ€คใ‚’็”Ÿๆˆใ™ใ‚‹ใ“ใจใŒๅฏ่ƒฝใซใชใ‚Šใพใ™ใ€‚

ๆณจๆ„:

Random\Randomizer::nextFloat() ใŒ่ฟ”ใ™ๅฏ่ƒฝๆ€งใŒใ‚ใ‚‹ float ใฎๅ€คใฎ็ฏ„ๅ›ฒใฏใ€ Randomizer::getFloat(0.0, 1.0, IntervalBoundary::ClosedOpen) ใจๅŒใ˜ใงใ™ใ€‚

ใงใ™ใŒใ€ๅ†…้ƒจ็š„ใช Random\Randomizer::nextFloat() ใฎๅฎŸ่ฃ…ใฏใ‚ˆใ‚ŠๅŠน็އ็š„ใงใ™ใ€‚

่ญฆๅ‘Š

ไน—็ฎ—ใ‚„ๅŠ ็ฎ—(ใ„ใ‚ใ‚†ใ‚‹ใ‚ขใƒ•ใ‚ฃใƒณๅค‰ๆ›)ใ‚’ไฝฟใฃใฆใ€ ใ“ใฎ้–ขๆ•ฐใฎๆˆปใ‚Šๅ€คใ‚’็•ฐใชใ‚‹ๅŒบ้–“ใซๆ‹กๅคง/็ธฎๅฐใ™ใ‚‹ใจใ€ ็ตๆžœใฎๅ€คใซๅใ‚ŠใŒๅ‡บใ‚‹ใ‹ใ‚‚ใ—ใ‚Œใพใ›ใ‚“ใ€‚ ใชใœใชใ‚‰ใ€ๆตฎๅ‹•ๅฐๆ•ฐ็‚นๆ•ฐใฏๆ•ฐ็›ด็ทšไธŠใงๅ‡ไธ€ใซๅˆ†ๅธƒใ™ใ‚‹ใ‚ใ‘ใงใฏใชใ„ใ‹ใ‚‰ใงใ™ใ€‚ ๅ…จใฆใฎๅ€คใŒๆตฎๅ‹•ๅฐๆ•ฐ็‚นๆ•ฐใซใ‚ˆใฃใฆๆญฃ็ขบใซ่กจ็พใงใใ‚‹ใจใฏ้™ใ‚‰ใชใ„ใฎใงใ€ ใ‚ขใƒ•ใ‚ฃใƒณๅค‰ๆ›ใฎ็ตๆžœใŒๆš—้ป™ใฎไธธใ‚ๅ‡ฆ็†ใซใ‚ˆใฃใฆๆฑ‚ใ‚ใ‚‹ๅŒบ้–“ใ‹ใ‚‰ๅค–ใ‚ŒใŸๅ€คใซใชใฃใฆใ—ใพใ†ๅฏ่ƒฝๆ€งใ‚‚ใ‚ใ‚Šใพใ™ใ€‚ ใ‚ขใƒ•ใ‚ฃใƒณๅค‰ๆ›ใฎ็ตๆžœ็”Ÿใ˜ใ‚‹ๅ•้กŒใฎ ่ฉณ็ดฐใช่ชฌๆ˜Ž ใฏใ€Random\Randomizer::getFloat() ใฎใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใซ่ชฌๆ˜ŽใŒใ‚ใ‚Šใพใ™ใ€‚

ไปปๆ„ใฎๅŒบ้–“ๅ†…ใงใƒฉใƒณใƒ€ใƒ ใช float ใฎๅ€คใ‚’็”Ÿๆˆใ™ใ‚‹ใซใฏใ€ Random\Randomizer::getFloat() ใ‚’ไฝฟใ„ใพใ™ใ€‚ไปปๆ„ใฎๅŒบ้–“ๅ†…ใงใƒฉใƒณใƒ€ใƒ ใชๆ•ดๆ•ฐใ‚’็”Ÿๆˆใ™ใ‚‹ใซใฏใ€ Random\Randomizer::getInt() ใ‚’ไฝฟใ„ใพใ™ใ€‚

ใƒ‘ใƒฉใƒกใƒผใ‚ฟ

ใ“ใฎ้–ขๆ•ฐใซใฏใƒ‘ใƒฉใƒกใƒผใ‚ฟใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚

ๆˆปใ‚Šๅ€ค

ๅŠ้–‹ๅŒบ้–“ [0.0, 1.0) (IntervalBoundary::ClosedOpen) ใซไธ€ๆง˜ใซๅˆ†ๆ•ฃใ—ใŸ float ใ‚’็ญ‰็ขบ็އใซ่ฟ”ใ—ใพใ™ใ€‚ ่ฟ”ใ•ใ‚Œใ‚‹ๅ€คใซใฏ 0.0 ใ‚’ๅซใฟใพใ™ใŒใ€ 1.0 ใฏๅซใฟใพใ›ใ‚“ใ€‚

ใ‚จใƒฉใƒผ / ไพ‹ๅค–

ไพ‹

ไพ‹1 Random\Randomizer::nextFloat() ใฎไพ‹

<?php
$r
= new \Random\Randomizer();

// ่ฟ”ใ•ใ‚Œใ‚‹ bool ๅ€คใฏใ€ๆŒ‡ๅฎšใ•ใ‚ŒใŸ็ขบ็އใง true ใซใชใ‚Šใพใ™
$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;

// ไปฅไธ‹ใฏ็ตถๅฏพใ‚„ใ‚‰ใชใ„ใง๏ผ:
//
// ไปฅไธ‹ใฎใ‚ณใƒผใƒ‰ใฏ nextFloat() ใŒ 1ใ‚’็ตถๅฏพใซๅซใพใชใ„ๅŠ้–‹ๅŒบ้–“ใ‹ใ‚‰ใ‚ตใƒณใƒ—ใƒชใƒณใ‚ฐใ—ใŸใซ
// ใ‚‚้–ขใ‚ใ‚‰ใšใ€4.5 ใ‚’ๅ‡บๅŠ›ใ—ใพใ™ใ€‚
printf("Wrong scaling: %.17g", $randomizer->nextFloat() * ($max - $min) + $min);

// ๆญฃใ—ใใฏใ€ไปฅไธ‹ใฎใ‚ˆใ†ใซใ—ใพใ™:
// $randomizer->getFloat($min, $max, \Random\IntervalBoundary::ClosedOpen);
?>

ไธŠใฎไพ‹ใฎๅ‡บๅŠ›ใฏไปฅไธ‹ใจใชใ‚Šใพใ™ใ€‚

Wrong scaling: 4.5

ๅ‚่€ƒ

  • Random\Randomizer::getFloat() - ็ญ‰็ขบ็އใซ้ธใ‚“ใ  float ใฎๅ€คใ‚’ๅ–ๅพ—ใ™ใ‚‹
๏ผ‹add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top