#php #math #random #operators #generator
#php #математика #Случайный #операторы #генератор
Вопрос:
Пока у меня есть это для генерации случайных чисел, и мне это нужно для генерации случайных операторов, в которых он просто прокручивает массив и выдает те же 2 оператора.
Таким образом, вместо генерации 5 строк он генерирует около 12. Я могу заставить его показывать оператора в математической задаче, но я не могу заставить операторов рандомизировать в каждой строке. Где-то что-то не так.
Мне также нужно, чтобы проблема генерировалась в таблице с двумя столбцами, где в одном столбце есть проблема, а в другом — решение. Если кто-то может хотя бы указать мне правильное направление, это было бы очень ценно!
<?php
for ($x = 0; $x <= 5; $x ) {
$num1 = mt_rand(1, 9);
$num2 = mt_rand(1, 9);
$operators = array(" ","-",);
switch ($operators[array_rand($operators)]) {
case " ":
$result = $num1 $num2;
break;
case "-":
$result = $num1 - $num2;
break;
}
foreach($operators as $value){
echo "$num1 $value $num2 = $result <br>";
}
}
?>
Ответ №1:
Попробуйте этот способ:
for ($x = 0; $x <= 5; $x ) {
$num1 = mt_rand(1, 9);
$num2 = mt_rand(1, 9);
$operators = array(" ","-",);
$value = $operators[array_rand($operators)];
switch ($value) {
case " ":
$result = $num1 $num2;
break;
case "-":
$result = $num1 - $num2;
break;
}
echo "$num1 $value $num2 = $result <br>";
}
Ответ №2:
- Вам не нужно повторять
$operators
, так как вы выбираете случайный. - Нет необходимости заново создавать
$operators
в цикле. - Если предполагается, что код выводит 5 строк, то
for
условие должно быть изменено на$x < 5
(вместо$x <= 5
).
Исправленная версия
<?php
$operators = [" ", "-"];
for ($x = 0; $x < 5; $x ) {
$num1 = mt_rand(1, 9);
$num2 = mt_rand(1, 9);
$k = array_rand($operators);
switch ($operators[$k]) {
case " ":
$result = $num1 $num2;
break;
case "-": // break
default:
$result = $num1 - $num2;
break;
}
echo "$num1 {$operators[$k]} $num2 = $result<br/>n";
}