Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2012, 15:21
Новичок на форуме
Отправить личное сообщение для divalinq Посмотреть профиль Найти все сообщения от divalinq
 
Регистрация: 13.12.2012
Сообщений: 2

Несколько неповторяющихся случайных картинок
У мення есть массив, его элементы это пути до картинок.
var images = new Array( 
  "img/1.jpg",
  "img/2.jpg",
  "img/3.jpg",
...
  "img/20.jpg"
);

Мне нужно вывести 5 случайных картинок из этого массива. Делаю так:
for (var i = 0; i < 5; i++) {
  var a = Math.floor(Math.random() * images.length);
  document.write ("<div class='photo'><img src ='"+images[a]+"' /></div>");
};

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

Подскажите, как лучше сделать, чтобы они не повторялись и чтобы гарантированно выводилось 5 штук.
Ответить с цитированием
  #2 (permalink)  
Старый 13.12.2012, 17:00
Аватар для a_l
a_l a_l вне форума
Кандидат Javascript-наук
Отправить личное сообщение для a_l Посмотреть профиль Найти все сообщения от a_l
 
Регистрация: 15.09.2011
Сообщений: 143

images.sort(function() { return Math.random() - 0.5; }).length = 5;
Ответить с цитированием
  #3 (permalink)  
Старый 13.12.2012, 17:13
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Дзен-трансгуманист
source.length < count ? count = source.length : 0;
О_о
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 13.12.2012, 17:22
Аватар для a_l
a_l a_l вне форума
Кандидат Javascript-наук
Отправить личное сообщение для a_l Посмотреть профиль Найти все сообщения от a_l
 
Регистрация: 15.09.2011
Сообщений: 143

Цитата:
Так будет статистически неравномерно. Попробуй, к примеру, на массивах из 3-4 значений сделать 10000 выборок не изменяя при этом оригинал. Ты увидишь, что одних комбинаций будет ощутимо больше, чем других.
Не думаю, что для ТС это критично. Если случайность не устраивает, можно дважды отсортировать.
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2012, 19:59
Новичок на форуме
Отправить личное сообщение для divalinq Посмотреть профиль Найти все сообщения от divalinq
 
Регистрация: 13.12.2012
Сообщений: 2

Благодарю
Ответить с цитированием
  #6 (permalink)  
Старый 17.12.2012, 19:09
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<script type="text/javascript">
var images = new Array( 
  "img/1.jpg",
  "img/2.jpg",
  "img/3.jpg",
...
  "img/20.jpg"
);
var img = images;
for (var i = 0; i < 5; i++) {
  var a = Math.floor(Math.random() * img.length);
  document.write ("<div class='photo'><img src ='"+img[a]+"' /></div>");
  img.splice(a,1);
};
</script>

Последний раз редактировалось Deff, 17.12.2012 в 19:35.
Ответить с цитированием
  #7 (permalink)  
Старый 17.12.2012, 19:57
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Поправил
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузчик картинок Livanderiaamarum Общие вопросы Javascript 1 15.01.2012 17:21
Несколько различных случайных чисел в диапозоне alexan0308 Общие вопросы Javascript 5 28.11.2011 20:47
Слайдер не отрабатывает несколько картинок SinX Элементы интерфейса 1 15.05.2011 22:28
Java ScrollTo. Скрол картинок на java. Надо подправить. vdm Ваши сайты и скрипты 1 28.10.2009 20:46
Java ScrollTo. Скрол картинок на java. Надо подправить. vdm Работа 0 27.10.2009 14:57