- random_int: documentation ( source)
<?php
echo "Задача: написать random3() и random4() возвращающие равновероятные значения используя только random2()\n";
echo random2() . " - random 0|1\n";
echo random3() . " - random 0|1|2\n";
echo random4() . " - random 0|1|2|3\n\n";
function random2(): int
{
return random_int(0, 1);
}
/**
* @return 0|1|2|3
*/
function random4(): int
{
return random2() + 2 * random2();
}
/**
* @return 0|1|2
*/
function random3(): int
{
$x = rr3x3();
return 1 + ("{$x[0]}{$x[1]}{$x[2]}" % 3);
}
//1,1,1
//1,1,2
//1,1,3
//всегда полная равнораспределенная комбинация 1-2-3 в каждом регистре
function rr3x3(): array
{
$x1 = 1 + random2() + random2();
$x2 = 1 + random2() + random2();
$x3 = 1 + random2() + random2();
if ($x2 === 2) {
$x2 = 1;
} elseif ($x2 === 3) {
$x2 = 2;
}
if ($x3 === 2) {
$x3 = 3;
} elseif ($x3 === 3) {
$x3 = 2;
}
return [$x1, $x2, $x3];
}