2010-11-23 5 views
0

Мне нужно создать случайную галерею изображений. За исключением того, что средний всегда должен быть одним и тем же.Петля со случайными числами, кроме середины

Предположим, у меня 40 изображений. Мне нужно выбрать 16 случайных изображений из 40. 9-е изображение всегда должно быть одинаковым.

Любая идея?

Точность:

«Сложный» часть для меня, чтобы знать, какие номера были уже использованы, которые не были

Заранее спасибо

+0

Вы отображения 16 изображений. Не являются ли те, кто уже используется? Что делает это «трудным»? – stillstanding 2010-11-23 10:10:15

+0

Мне нужно знать, поэтому я не использую их с моим случайным поколением – Flipke 2010-11-23 10:17:02

+0

См. Мой ответ. `$ array` содержит используемые числа. `$ unused` имеет номера, которые не были включены во время перетасовки. – stillstanding 2010-11-23 10:19:14

ответ

3

Решение без итерации:

$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

Что-то вдоль этих линий должно помочь вам:

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

Таким образом, написать функцию printRandomImage()

назовите его 8 раз, затем напечатайте неслучайное изображение, затем назовите его еще 7 раз.

Если вы хотите избежать дубликатов в случайных изображениях, вам необходимо удалить уже запущенные изображения из списка ваших 40 изображений.

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