Php intervalo de preenchimento random

Eu tenho isto:

$numbers = range(1,52); shuffle($numbers); foreach($users as $user) { $uniqueRand = array_pop($numbers); } 

Isso dá a cada usuário no meu database um número random exclusivo.

Eu tenho 15 usuários no total, é de alguma forma possível preencher o resto do intervalo de 1-32 e repetir o aleatorizado para dizer.

parece agora:

 1 - 24 2 - 26 3 - 2 4 - 6 5 - 8 6 - 31 7 - 25 8 - 16 9 - 13 10 - 21 11 - 19 12 - 29 13 - 8 14 - 4 15 - 6 

Apenas usuários com números randoms, é possível atribuir os números que não foram alocados a um usuário no intervalo de forma aleatória de um usuário até que todos os números da gama sejam fornecidos?

 < ?php function f($userIds, $numbers) { shuffle($numbers); // added $picks = array(); foreach ($userIds as $id) { $picks[] = array('id' => $id, 'numbers' => array()); } // Shuffle order of userIds. Give one number to each user. Repeat both steps // until all numbers are gone $n = count($userIds); $i = 0; while (!empty($numbers)) { if ($i % $n === 0) { shuffle($picks); } $picks[$i % $n]['numbers'][] = array_pop($numbers); $i++; } return $picks; } $picks = f(array(1, 2, 3, 4, 9, 12, 47, 50), range(1, 30)); foreach ($picks as $p) { printf("id %s: %s\n", $p['id'], implode(', ', $p['numbers'])); } 

Produzirá algo como:

 id 47: 28, 22, 8, 6 id 1: 30, 17, 12, 5 id 12: 24, 16, 7, 4 id 9: 23, 19, 13, 3 id 50: 25, 18, 14, 2 id 3: 27, 15, 9, 1 id 4: 29, 20, 10 id 2: 26, 21, 11 

Editar: esqueci algo. Você pode querer shuffle () os números, também, para obter uma distribuição mais aleatória. Adicionado a linha para a function.