首页 > 解决方案 > 随机填充网格/数组

问题描述

我有一个由零 (0) 组成的数组 MxN。我需要用随机位置填充 20 个事实 (1)。

一个例子

1 1 1 0 1 0 1 
0 0 0 0 0 0 0 
0 1 0 1 0 1 1 
0 0 0 0 1 1 1 
0 0 1 0 0 0 0 
0 0 1 0 1 1 0 
1 1 0 1 1 0 0

我用非确定算法填充它:

$amountUnits = 20;
while($amountUnits > 0) {
    $i = rand(0, $M-1);
    $j = rand(0, $N-1);

    if(!$grid[$i][$j]) {
        $grid[$i][$j] = 1;
        $amountUnits--;
    }
}

但它是在随机时间内解决的。我怎样才能通过种子或其他东西来填充它?我在哪里可以读到这个问题?

请原谅我的英语不好。

谢谢!

标签: phpalgorithm

解决方案


用 1 填充一维数组 x 次,其余的用 0 填充。 shuffle () 对数组进行随机播放。array_chunk 对数组进行划分,以便创建一个矩阵(二维数组)。

$rows = 7;
$cols = 7;
$fillTrue = 20;

$arr = array_fill(0,$fillTrue,1)+array_fill($fillTrue, $rows*$cols-$fillTrue,0);
shuffle($arr);
$arr = array_chunk($arr,$cols);

推荐阅读