Задание из учебника Python на PHP

Есть задание в учебнике по Python:

Создайте список или кортеж, содержащий серию из 10 чисел и 5 букв. Случайным образом выберите 4 числа или буквы из списка. Выведите сообщение о том, что билет, содержащий эту комбинацию из четырех цифр или букв, является выигрышным. Анализ лотереи: напишите цикл, который проверяет, насколько сложно выиграть в смоделированной вами лотерее. Создайте список или кортеж с именем my_ticket. Напишите цикл, который продолжает генерировать комбинации до тех пор, пока не выпадет выигрышная комбинация. Выведите сообщение с информацией о том, сколько выполнений цикла понадобилось для получения выигрышной комбинации.

В общем смысл сделать массив из которого берётся 4 значения и сравниваются с переменной из 4х символов. Значения перебираются до тех пор пока не совпадут, кол-во итераций записывается.
Я решил попробовать сделать это на php, однако получилась ересь, поправьте меня пожалуйста, что сделал не так и скажите как бы это сделать проще и правильнее.


$arr = array(1,2,3,4,5,6,7,8,9,0,'a','b','c','d');

$answer = array_rand( $arr , 4 );

$numb1 = $arr[$answer[0]];
$numb2 = $arr[$answer[1]];
$numb3 = $arr[$answer[2]];
$numb4 = $arr[$answer[3]];

$numb = $numb1 . $numb2 . $numb3 . $numb4 ;

$final = "12cd";

for ($s=0; $numb != $final ; $s++) { 
    
    if ($numb == $final){
        echo $s;
        exit;
    }

};

?>

Почти уверен, что я написал ужасно, но ничего другого не придумал, к сожалению.


Ответы (1 шт):

Автор решения: Андрей Мисайлов

По итогу это, не совсем то, что нужно, но оно выполняет ту же функцию, только не берётся 4 случайных символа из массива, а перемешивается сам массив и берётся 4 числа.

$numb = function(){
    $arr = array(1,2,3,4,5,6,7,8,9,0,'a','b','c','d');
    shuffle($arr); 
    return implode('', array_slice($arr, 0,4));
};

$cc = "4568";

$count = 0;

while ($numb() !== $cc) {
    
    $numb();
    $count++;

};

echo "<br>";
echo("количество попыток для получения числа $cc, равно $count");
→ Ссылка