Создать массив с рандомными числами по возрастанию. php
Только в начале изучения php. Нужно создать массив из 10 чисел. В первый элемент записать число 1. Каждое следующее число генерируется случайно и записывается в массив при условии, если оно больше предыдущего. Я знаю, что рандом может сразу выдать максимальную цифру, еще подумаю над этим.
$arr = [];
$arr = array_push($arr, 1);
while (count($arr) <= 9) {
$num = rand(0, 100);
$endNum = end($arr);
if ($num > $endNum) {
$arr[] = array_push($arr, $num);
}
}
print_r($arr);
Ответы (2 шт):
Но нужно именно генерировать случайное число и проверить, больше ли оно предыдущего. А потом записать в массив.
Генерируйте случайные числа с постепенным увеличением максимального:
$arr[] = 1;
$total = 10;
$step = $total;
while (count($arr) < $total) {
$rand = rand(1, $step + $total);
$max = max($arr);
if ($rand > $max) {
$arr[] = $rand;
$step += $total;
}
}
var_dump($arr);
Только наверное в задании погорячились с условием "если оно больше предыдущего" нужно ещё учитывать, что случайное число может быть 100, тогда если текущее число 100 и предыдущее 100, то это будет бесконечный цикл. Поэтому я думаю вот такое решение может подойти, мы проверяем что предыдущее меньше текущего $arr[$i-1]<$num, если это не так, то повторяем попытку. Ну и добавочное условие, если случайное число оказалось 100, тогда мы записываем его $num==100
$arr = [1];
for ($i=1; $i<10; $i++) {
$num = rand(0, 100);
($arr[$i-1]<$num or $num==100)?$arr[]=$num:$i--;
}
print_r($arr);