Скрипт выбирает сучайные числа

Arm999

Новичок
Здравствуйте! Этот скрипт должен выбрать по случайному порядку цифры, и при этом цифры не должны повторятся. Но возникает такая проблема и не могу в нем разобраться . При заполнении формы скрипт выбирает случайные цифры , но проблема в том что если я $min и $max -у давал 1 и 10 то скрипт выбирает 8 цифры а потом показывает "больше цифров нет", а после этого если вводить что то в форму может показывать какую ту цифру. Не знаю сколько понятно объяснял проблему, если что то не понятно пожалуйста скажите. Заранее спасибо.

PHP:
<?PHP
session_start();
  
$min = 1;
$max = 10;


    while(true) {
        $n = rand($min, $max);
        $_SESSION['i'][0] = 0;
        if (array_search($n, $_SESSION['i'], true)== false) {
            $_SESSION['i'][] = $n;
            echo'цифра'. $n.'<br>';
            break;
        }
      
        while(array_search($n, $_SESSION['i'], true)== true)
        {
              
                echo $n.'<br>';
                    $n = rand($min, $max);
        if ($max - $min + 1 < count($_SESSION['i'])-1)
                {
              
                echo'больше ничего нет <br>';
                break;
                }
              
        }
                if ($max - $min + 1 >= count($_SESSION['i'])-1)
                    {
                    $_SESSION['i'][] = $n;
                    }
            break;
    }
  
    if(!isset($_SESSION['i']))
    $_SESSION['i'][0] = 0;
    $_SESSION['i'][1] = NULL;
    if(empty($_POST['name']) && isset($_POST['add']) && $max - $min + 1 !== count($_SESSION['i'])-1)
            echo 'Вы ничего не ввели';
elseif($_POST['name']!==$_SESSION['a'][count($_SESSION['a'])-1] && $max - $min + 1 !== count($_SESSION['i'])-1)
    {
    $_SESSION['a'][] = $_POST['name'];
    }
if(empty($_POST['name']) && isset($_POST['add']))
    $img_name='00';
elseif(empty($_POST['name']) && !isset($_POST['add']) && !isset($_GET['begin']))
    $img_name='001';
else
    $img_name=$_SESSION['i'][count($_SESSION['i'])-1];
  
  
?>
<DOCTYPE html>
<head>
    <title></title>
</head>
<body>
<?php
  var_dump($_SESSION['a']);
  echo '<br>';
  var_dump($_POST['name']);
  var_dump($_SESSION['i']);
?>

    </body>
</html>
 
Последнее редактирование:

vasinsky

Новичок
$n = rand($min, $max); - если ты указал здесь от 1 до 10 - то и в результате ты увидишь случайное число от 1 до 9

я не буду разбирать твой огромный пример - логика проста

-формируешь число с rand(4,10) - случайное число от 4-10 цифр
-складываешь в массив
-чтобы не было дублей в массиве - есть in_array()
-собираешь массив, пока не наберёшь нужное кол-во эл-ов (но учитывай - что кол-во вариантов ограничено может быть - я это к тому - что не заставляй собирать больше чем может быть)))
 
Последнее редактирование:
Сверху