随机数,列和行。 PHP

时间:2015-01-30 04:20:02

标签: php random

请原谅,因为这是我的第一篇文章,对于任何类型的编程我都是新手。我希望我的问题很明确,我正在使用Excel引用,因为我认为这解释了我想要做的最好。

我正在尝试为池生成随机数。我有8行数字,每行包含10个点,0到9.我想在每一行中有一个随机数,并确保每行中的数字不重复。

示例网格 - 8列宽x 10行长。

我正在为每一列重复这个脚本,但我得到的是相同的数字是行,我想确保不会发生。

for ($i=1; $i<=10; $i++) {
            while (1) {
                $duplicate = 0;
                $num=rand(0,9);     
                for ($x=1; $x<$i; $x++) {
                    if ($NFC1[$x]==$num) { $duplicate = 1; }
                }

                if ($duplicate==0) {
                    $NFC1[$i]=$num;
                    break;
                }
            }
        }

这是结果,你可以看到我的每列都有随机数,但不是每行。

"4";"8";"5";"5";"0";"4";"2";"7"
"5";"9";"4";"3";"9";"9";"9";"0"
"9";"5";"1";"1";"5";"8";"6";"1"
"7";"4";"6";"2";"6";"7";"3";"3"
"2";"6";"8";"4";"7";"2";"7";"5"
"0";"1";"0";"7";"2";"1";"4";"6"
"1";"7";"9";"9";"4";"3";"0";"4"
"3";"0";"3";"0";"3";"5";"5";"9"
"8";"2";"7";"8";"1";"6";"8";"2"
"6";"3";"2";"6";"8";"0";"1";"8"

1 个答案:

答案 0 :(得分:0)

适用于非方阵的here的答案可能如下所示:

$rows = 10;    // Number of rows
$columns = 8;  // Number of columns

$row = range(0, $columns-1);
$column = range(0, $rows-1);

shuffle($row);
shuffle($column);

// Create an array
foreach ($row as $x => $value)
    foreach ($column as $y)
        $array[$y][$x] = $value++ % max($rows, $columns);

如果你想看到结果:

foreach($array as $r) {
    foreach($r as $number) {
        echo $number.' ';
    }
    echo "<br/>";
}