2015-01-31 3 views
0

Я сгенерировал в массиве 6 случайных чисел, используя функцию rand(). Я хотел бы убедиться, что ни одно из этих чисел не дублирует. я написал:6 различных случайных уникальных чисел php

$lucky_numbers = array (rand (1,50), rand (1,50),rand (1,50),rand (1,50),rand (1,50),rand (1,50)); 
if ($lucky_numbers[0] == $lucky_numbers[1]) { 
    print "same"; 
    $lucky_numbers[1]++; 
} 
if ($lucky_numbers[1] > 50) { 
    $lucky_numbers[1] = $lucky_numbers[1]- 6; 
} 

, а затем проверяется каждый порядковый номер с аналогичным кодом. Но что-то не работает. Есть идеи ? Спасибо заранее.

+4

Сделать массив от 1 до 50. Затем с помощью 'array_rand()', чтобы выбрать 6 случайных элементов из массива. – Barmar

+0

@ Бармар: что, если есть дубликат? Я хочу 10 уникальных случайных чисел между 1 и 5. – AbraCadaver

+0

@AbraCadaver Если вы делаете массив от 1 до 50 и перемешаете его ... как вы думаете, будет существовать дубликат? – Jon

ответ

0

Просто используйте функцию shuffle.

<?php 
$numbers = range(1, 50); 
shuffle($numbers); 
for ($x=1;$x<=6;$x++){ 
    echo $numbers[$x] . "\n"; 
} 
?> 

См codepad example

+0

, вы можете вместо этого использовать 'array_search', чтобы сохранить некоторую память, поскольку вы запрашиваете большое количество уникальных номеров, это может быть еще быстрее. – Gal

+0

'fast' и' save_memory' могут быть верны только для больших объемов данных. С 50 ключами я не мог получить его медленнее, если не использовать 'sleep'. –

+0

Также я понятия не имею, что вы ищете. –

Смежные вопросы