|
|
|
| Нужно сгенерировать 4-х значное число, при этом в нем не должно быть более двух одинаковых цисел и неважно в каком порядке. Например 3233 не допускается, а 3523 или 3365 допускаются.
И самый важные момент, нужно сверять с массивом на наличе сгенерированного числа в данном массиве.
Т.е. есть функция get_is_number($arg), которое возвращает либо true, либо false. Если сгенерированное число $arg существует, то функция возвращает true, и нужно заново генерировать число, если возвращает false, То данного числа в массиве нет, тогда возвращаем это число и прекращаем рекурсию (если тут нужно именно рекурсией). | |
|
|
|
|
|
|
|
для: admiral
(02.05.2012 в 00:06)
| | как вариант через файл, куда будет записываться новое сгенерированное число, потом оттуда загружаеться, проверяеться на на наличие в масиве и т.п. это идея алгоритма, а не решения задачи. | |
|
|
|
|
|
|
|
для: admiral
(02.05.2012 в 00:06)
| |
<?
if(!isset($_SESSION['rnd'])) $_SESSION['rnd'] = array();
function rndNum() {
$s = '0123456789';
$n = substr(str_shuffle($s), 0, 4);
if(!in_array($n, $_SESSION['rnd'])) {
array_push($_SESSION['rnd'], $n);
return $n;
} else rndNum();
}
echo rndNum();
|
Но учтите, нужно еще проверять и длину массива хранящего числа на максимально возможную. И если она достигнет предела, тогда что? | |
|
|
|