2010-11-23 8 views
0

J'ai besoin de générer une galerie d'images aléatoires. Sauf que le milieu doit toujours être le même.Boucle avec des nombres aléatoires, sauf le milieu

Disons que j'ai 40 images. Je dois choisir 16 images aléatoires de la 40. La 9ème image devrait toujours être la même.

Une idée?

Précision:

La « dure » une partie pour moi est de savoir quels sont les numéros ont déjà été utilisés, qui ne sont pas

Merci à l'avance

+0

Vous afficher 16 images. Ne sont-ils pas représentatifs de ce qui est déjà utilisé ?! Qu'est-ce qui rend cela "dur"? – stillstanding

+0

J'ai besoin de savoir pour ne pas les utiliser avec ma génération aléatoire – Flipke

+0

Voir ma réponse. '$ array' contient les nombres utilisés. '$ unused 'a les numéros qui n'ont pas été inclus pendant le remaniement. – stillstanding

Répondre

3

Solution sans itération:

$array=$original; // $original represents your 40 images 
$ninth=$array[8]; // save 9th element for use later 
unset($array[8]); // exclude the 9th element 
shuffle($array); // randomize sequence 
$array=array_slice($array,0,16); // get 16 images 
$array[8]=$ninth; // replace 9th element with saved element 
$unused=array_diff($original,$array); // list of unused elements 
+0

Parfait, sauf le changement $ array [9] = $ neuvième à array_splice ($ array, 8, 0, $ neuvième); Merci beaucoup ! – Flipke

0

Quelque chose le long de ces lignes devrait vous aider:

for ($i=1; $i<=16; $i++) { 
    if ($i==9) { 
    // show static image 
    } else { 
    // generate random nr between 1 and 40 
    } 
} 
+0

Merci, j'avais compris cette partie, le problème est de savoir quels numéros étaient déjà utilisés, et lesquels ne l'étaient pas. – Flipke

+0

Ah, vous n'avez pas mentionné cela dans votre question :-) Voir la réponse @ stillstanding, pas besoin de dupliquer cela. –

+0

Désolé, corrigé immédiatement – Flipke

1

Alors, écrire un printRandomImage (fonction)

appelez-le 8 fois, puis imprimez l'image non-aléatoire, puis appelez-le 7 fois plus.

Si vous souhaitez éviter les doublons dans les images aléatoires, vous devez supprimer les images déjà sélectionnées de la liste de vos 40 images.

Questions connexes