Скользящие средние, основанные на 5 числах этих выигрышных чисел, являются движущейся частью. Итак, если выигрышные номера: 3-4-5-6-7-8-4-5-6-33-23-12-5-1 Затем первая скользящая средняя основана на 3-4-5-6-7, разделенных на 5. Затем вторая скользящая средняя основана на 4-5-6-7-8, разделенных на 5. Затем третья скользящая средняя основана на 5-6-7-8-4, разделенных на 5.
Я попытался создать массив, но это не сработало.
<?php
$existing = [];
$win_numbers = [];
for ($rnd=1;$rnd<=250;$rnd++)
{
$randoms[] = mt_rand(0,36); // see this block for generating randoms
}
echo "Random Numbers:<br>";
echo implode('-', $randoms).PHP_EOL;
echo "<br><br>";
$i = 0;
foreach($randoms as $rnd){
$i++;
if (in_array($rnd,$existing)){
$win_numbers[] = $i;
$i=1;
$existing = [];
}
$existing[] = $rnd;
}
echo "Win Numbers:<br>";
echo implode('-',$win_numbers);
echo "<br><br>";
echo "Moving Averages:<br>";
?>






Вы можете сделать это так, также его можно оптимизировать с помощью нескольких методов, таких как array_sum() и array_slice()
<?php
// Function to print moving average
function movingAverage($win_numbers, $average_for)
{
foreach($win_numbers as $key=>$value){
$win_number_consecutive_5 = array_slice($win_numbers, $key, $average_for);
if (count($win_number_consecutive_5) == $average_for) {
$win_averages[] = array_sum($win_number_consecutive_5) / $average_for;
}
}
return $win_averages;
}
echo "Moving Averages:<br>";
$win_numbers = explode('-','3-4-5-6-7-8-4-5-6-33-23-12-5-1');
$average_for = 5;
echo implode('-',movingAverage($win_numbers, $average_for));
?>
РАБОЧАЯ ДЕМО:https://3v4l.org/GO0Ai
Если вы зациклите массив с помощью цикла for и используете array_slice, вы можете получить скользящее среднее.
for($i=0;$i<count($randoms)-4;$i++){
$avg[] = array_sum(array_slice($randoms, $i, 5))/5;
}
Пример: https://3v4l.org/XUdlP
Он еще не обновляется на основе выигрышных номеров. Если я обновляю, он не обновляется.