请原谅,因为这是我的第一篇文章,对于任何类型的编程我都是新手。我希望我的问题很明确,我正在使用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"
答案 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/>";
}