我有一个如下所示的长数组。我需要实现的是检查这个数组中每6个元素是否都包含值为1。如果没有找到,则必须将其随机添加到其中6个元素之一(通过替换任何原始值)。另外,如果在每6个元素中发现该值超过2次,则需要将其中一个用另一个随机数字替换。
我已经编写了能够随机生成以下数组的代码。但是我不知道如何检查数组中每6个元素是否都包含值为1,如果没有找到该如何随机添加它,如果发现超过1次应当如何使用另一个随机数替换其中一个值。
简而言之,最终结果应该是:在每6个元素中,此数组必须至少包含一次值为1,并且不能超过一次,随机位于每6个元素中的某个位置。
到目前为止,我已经完成了以下工作,此代码生成以下数组:
我已经编写了能够随机生成以下数组的代码。但是我不知道如何检查数组中每6个元素是否都包含值为1,如果没有找到该如何随机添加它,如果发现超过1次应当如何使用另一个随机数替换其中一个值。
简而言之,最终结果应该是:在每6个元素中,此数组必须至少包含一次值为1,并且不能超过一次,随机位于每6个元素中的某个位置。
到目前为止,我已经完成了以下工作,此代码生成以下数组:
/*
We select the elements to add randomly in the final array from a DB table
*/
$elements = parent::$db->select('_matrix_elements', 'element_id', NULL, 'ORDER BY RAND()');
$count = count($elements) - 1; //count the total number of the elements -1 to start from zero
$columns = 6;
$lines = 8;
//generating the final array
for ($a = 1; $a <= $lines; $a++) {
for ($b = 1; $b <= $columns; $b++) {
$rand = rand(1,$count);
$line['position_'.$a.'_' . $b] = $elements[$rand]['element_id'];
}
}
Array
(
[position_1_1] => 14
[position_1_2] => 6
[position_1_3] => 5
[position_1_4] => 6
[position_1_5] => 9
[position_1_6] => 8
[position_2_1] => 11
[position_2_2] => 7
[position_2_3] => 6
[position_2_4] => 1
[position_2_5] => 7
[position_2_6] => 5
[position_3_1] => 14
[position_3_2] => 5
[position_3_3] => 4
[position_3_4] => 7
[position_3_5] => 4
[position_3_6] => 10
[position_4_1] => 6
[position_4_2] => 2
[position_4_3] => 2
[position_4_4] => 1
[position_4_5] => 7
[position_4_6] => 6
[position_5_1] => 3
[position_5_2] => 7
[position_5_3] => 8
[position_5_4] => 10
[position_5_5] => 3
[position_5_6] => 2
[position_6_1] => 8
[position_6_2] => 2
[position_6_3] => 10
[position_6_4] => 2
[position_6_5] => 10
[position_6_6] => 9
[position_7_1] => 6
[position_7_2] => 10
[position_7_3] => 4
[position_7_4] => 8
[position_7_5] => 1
[position_7_6] => 5
[position_8_1] => 2
[position_8_2] => 7
[position_8_3] => 4
[position_8_4] => 7
[position_8_5] => 9
[position_8_6] => 13
)
$position[7][4] = 8
? - Madara's Ghost