13 марта, 2009

Совершенно случайные числа без повторения (php)

Сегодня столкнулся с задачей сделать 4 случайных числа в заданном диапазоне, которые бы не повторялись, казалось бы нетривиальная задача, но!
Обычное rand($min, $max) не давало нужного результата, особенно при малом числе $max ~ 15;
То есть:

$number[0] = rand(1, $max);
$number[1] = rand(1, $max);
$number[2] = rand(1, $max);
$number[3] = rand(1, $max);

Могло в итоге выдать 2, 2, 3, 9 - эти повторения мне нужны не были, спросив совета, fd дал ссылку на перловый вариант cookbook, но реализация мне не понравилась своей громозкостью и нелапидарностью.
в итоге проявив смекалку появилось вот такое решение

function getFourRandomNumber ($maxCount){
$numbers = range(1, $maxCount);
shuffle($numbers);
return array($numbers[0], $numbers[1], $numbers[2], $numbers[3]);
}

Вуаля! Просто лапидарно, и даже странно :)

Комментариев нет:

Отправить комментарий