使用过程代码生成不同的随机数


Generate distinct random numbers using procedural code

我一直在尝试使用过程代码生成不同的随机数。但我没有做到。请在这方面帮助我。提前谢谢。

<?php 
$rnd_array = array(0,0,0,0,0,0,0,0,0,0);
$a = 1;
for ($i=0; $a <= 10 ; $i++)
{
    echo $rnd = rand() % 10;
    echo "'t 't";
    for ($j=0; $j < 10 ; $j++)
    { 
        if ($rnd == $rnd_array[$j])
        {
            $flag = true;
            break;
        }
        else
        {
            $flag = false;
        }
    }
    if ($flag == false)
    {
        $rnd_array[$a] = $rnd;
        $a++;
    }
}
echo "<br> <br>";
for ($k=0; $k < 10 ; $k++)
{
    echo $rnd_array[$k];
    echo "'t 't";
}
?>

我会使用一个稍微不同的逻辑 - 从一个空数组开始,生成一个随机数,如果数组尚未包含它,则将其放入数组中。重复此操作,直到数组包含所需数量的元素。

下面是一个简单的示例:

$num = 10;
$min = 1;
$max = 100;
$array = [];
while (count($array) < $num) {
    $random = mt_rand($min, $max);
    if (!in_array($random, $array)) {
        $array[] = $random;
    }
}

10 个不同的随机数

    <?php 
$numbers = array();
$i = 0;
while($i < 10){
    $new = rand();
    $known = false;
    foreach($numbers as $key => $value){
        if($value == $new ){
            $known = true;
            break;
        }
    }
    if(!$known){
        $numbers[$i]=$new;
        $i++;
    }

}
var_dump($numbers);
?>

因为数组长度等于生成的随机值的范围

$rnd_array = range(0,9);
shuffle($rnd_array);
print_r($rnd_array);
Array
(
    [0] => 9
    [1] => 0
    [2] => 5
    [3] => 3
    [4] => 6
    [5] => 4
    [6] => 2
    [7] => 7
    [8] => 1
    [9] => 8
)