Random\Engine\Xoshiro256StarStar::__construct

(PHP 8 >= 8.2.0)

Random\Engine\Xoshiro256StarStar::__construct โ€” ๆ–ฐใ—ใ„ xoshiro256** ใ‚จใƒณใ‚ธใƒณใ‚’ไฝœๆˆใ™ใ‚‹

่ชฌๆ˜Ž

public function Random\Engine\Xoshiro256StarStar::__construct(string|int|null $seed = null)

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

seed

็ฌฆๅทใชใ—64ใƒ“ใƒƒใƒˆๆ•ดๆ•ฐใงๆง‹ๆˆใ•ใ‚Œใ‚‹ 256ใƒ“ใƒƒใƒˆ(32ใƒใ‚คใƒˆ) ใฎๅ†…้ƒจใ‚นใƒ†ใƒผใƒˆใŒใ€ ใฉใฎใ‚ˆใ†ใซไธŽใˆใ‚‰ใ‚Œใ‚‹ใ‹ใฏ seed ใฎใ‚ฟใ‚คใƒ—ใซไพๅญ˜ใ—ใพใ™ใ€‚

ใ‚ฟใ‚คใƒ— ่ชฌๆ˜Ž
null ใƒฉใƒณใƒ€ใƒ ใช32ใƒใ‚คใƒˆใฎใ‚นใƒ†ใƒผใƒˆใ‚’ใ€ CSPRNG ใ‚’ไฝฟใฃใฆ็”Ÿๆˆใ—ใ€ๅŸ‹ใ‚ใพใ™ใ€‚
int seed ใ‚’64ใƒ“ใƒƒใƒˆใฎ็ฌฆๅทใชใ—ๆ•ดๆ•ฐใจ่งฃ้‡ˆใ—ใ€ ใใฎๅ€คใ‚’ SplitMix64 ใ‚ขใƒซใ‚ดใƒชใ‚บใƒ ใซไธŽใˆใฆ็”Ÿๆˆใ—ใŸใ€ 4ใคใฎ้€ฃ็ถšใ—ใŸๅ€คใงใ‚นใƒ†ใƒผใƒˆใ‚’ๅŸ‹ใ‚ใพใ™ใ€‚
string 32ใƒใ‚คใƒˆใฎๆ–‡ๅญ—ๅˆ—ใ‚’ใ€4ใคใฎใƒชใƒˆใƒซใ‚จใƒณใƒ‡ใ‚ฃใ‚ขใƒณใ€ ใ‹ใค็ฌฆๅทใชใ—64ใƒ“ใƒƒใƒˆใฎๆ•ดๆ•ฐใจ่งฃ้‡ˆใ—ใฆใ‚นใƒ†ใƒผใƒˆใ‚’ๅŸ‹ใ‚ใพใ™ใ€‚

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

  • seedใŒๆ–‡ๅญ—ๅˆ—ใงใ€้•ทใ•ใŒ32ใƒใ‚คใƒˆใงใชใ‹ใฃใŸๅ ดๅˆใ€ ValueError ใŒใ‚นใƒญใƒผใ•ใ‚Œใพใ™ใ€‚

  • seedใŒๆ–‡ๅญ—ๅˆ—ใงใ€32 ๅ€‹ใฎ NULใƒใ‚คใƒˆ("\x00") ใงๅŸ‹ใ‚ใ‚‰ใ‚Œใฆใ„ใŸๅ ดๅˆใ€ ValueError ใŒใ‚นใƒญใƒผใ•ใ‚Œใพใ™ใ€‚

ไพ‹

ไพ‹1 Random\Engine\Xoshiro256StarStar::__construct() ใฎไพ‹

<?php
// ใƒฉใƒณใƒ€ใƒ ใช256ใƒ“ใƒƒใƒˆใฎใ‚ทใƒผใƒ‰ใ‚’ไฝฟใ„ใพใ™ใ€‚
$e = new \Random\Engine\Xoshiro256StarStar();

$r = new \Random\Randomizer($e);
?>

ไพ‹2 ๆ–‡ๅญ—ๅˆ—ใ‹ใ‚‰ใ‚ทใƒผใƒ‰ใ‚’ไฝœใ‚‹

<?php
$string = "My string seed";

// $string ใ‚’256ใƒ“ใƒƒใƒˆใฎใ‚ทใƒผใƒ‰ใซๅค‰ๆ›ใ™ใ‚‹ใŸใ‚ใซใ€SHA-256 ใงๆ–‡ๅญ—ๅˆ—ใ‚’ใƒใƒƒใ‚ทใƒฅๅŒ–ใ—ใ€
// ใƒใ‚คใƒŠใƒชใงๅ‡บๅŠ›ใ—ใพใ™ใ€‚
// ๅŒใ˜ๆ–‡ๅญ—ๅˆ—ใ‚’ไฝฟใ†ใจใ€ๅŒใ˜ใƒฉใƒณใƒ€ใƒ ใชใ‚ทใƒผใ‚ฑใƒณใ‚นใŒ็”Ÿๆˆใ•ใ‚Œใพใ™ใ€‚
$e = new \Random\Engine\Xoshiro256StarStar(
    hash('sha256', $string, binary: true)
);

echo bin2hex($e->generate()), "\n";
?>

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

6e013453678388c2
๏ผ‹add a note

User Contributed Notes

There are no user contributed notes for this page.