php случайные два четных числа с первым большим значением

У меня есть следующий код, который выдает случайный математический вопрос, я пытаюсь получить только четные числа из тега rand и сделать первое число выше, чем второе число.

<?php
//set the sum
$operarors = array( '+','-');
$operator = $operarors[rand(0,1)];
//random the numbers
$numberone = rand(4,10);
$numbertwo = rand(2,4);
//get the answer
if ($operator == '-') {
$answer1 = $numberone - $numbertwo;
}
if ($operator == '+') {
$answer1 = $numberone + $numbertwo;
}
if ($operator == 'x') {
$answer1 = $numberone * $numbertwo;
}
if ($operator == '/') {
$answer1 = $numberone / $numbertwo;
}

echo "Question: $numberone $operator $numbertwo<br>";
echo "<br>";
echo $answer1;

?>

я посмотрел на случайная функция и не могу найти нужную мне информацию для обеих проблем

Чтобы зафиксировать значение первого числа выше второго, я сказал случайным числам от 4 до 10 и попросил случайные числа от 2 до 4 для второго

$numberone = rand(4,10);
$numbertwo = rand(2,4);

Но для функциональности этого кода мне бы хотелось, чтобы мне это не нужно было делать.

Причина этого в том, что если первое число равно 4, а второе — 5, ответ равен -1.
это будет для моей маленькой дочери, чтобы помочь с ее математикой, и там не учат — номера это рано 🙂

К случайным четным числам я пришел к концу моего мышления, как я пытался Google найти ответ на вопрос и не найти ничего для работы над

Вы, вероятно, можете сказать, что я не эксперт в php, поэтому, пожалуйста, дайте немного больше опыта, чтобы я мог получить лучшее знание

заранее спасибо

0

Решение

Чтобы получить случайное число, которое даже сделать следующее:

$max = 10;
echo $evenRandomNb = rand(0, round(($max / 2), 0, PHP_ROUND_HALF_DOWN)) * 2;

Чтобы получить 2 случайных числа с одним большим, чем второе (никогда не равным), выполните:

$max = 10;
echo $firstNb = rand(0, $max - 1);
echo $secondNb = rand($firstNb + 1, $max);

Возможно, вы захотите объединить два метода, чтобы получить два четных числа, причем второй будет больше первого:

$max = 10;
echo $firstNb = rand(0, round((($max - 1) / 2), 0, PHP_ROUND_HALF_DOWN)) * 2;
echo $secondNb = rand(round((($firstNb + 2) / 2), 0, PHP_ROUND_HALF_DOWN), round(($max / 2), 0, PHP_ROUND_HALF_DOWN)) * 2;
2

Другие решения

Просто делать rand()затем умножьте на 2 (гарантируя четное число), поместите их в массив и arsort() их (ставит их в порядке убывания)

$numbers = arsort(array(
rand(0,5)*2,
rand(0,5)*2
));
if($numbers[0] == $numbers[1]) {
$numbers[1]+=2; // if you need them to be not equal
}

echo 'This is number one: ' . $numbers[0] . '.<br>';
echo 'This is number two: ' . $numbers[1] . '.';
0

По вопросам рекламы [email protected]