Автор Тема: выбор ссылки из массива  (Прочитано 2944 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн MASe

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://drezna.chat.ru
выбор ссылки из массива
« : 19 Марта 2002, 17:37:23 »
как то раз уже спрашивал здесь по этому поводу...
нужен был скрипт, хранящий в себе массив ссылок и выдающий по три случайных... причем ни одна из этих трех не должна по идее повторяться...
кручу, верчу, меняю... а все равно происходят эти повторения....
кто знает почему??? и что тут некорректно???

var links=new Array();
links[0] = "Picture#0";
links[1] = "Picture#1";
links[2] = "Picture#2";
links[3] = "Picture#3";
links[4] = "Picture#4";
links[5] = "Picture#5";
links[6] = "Picture#6";
links[7] = "Picture#7";
links[8] = "Picture#8";
links[9] = "Picture#9";
var linksprint = Array();
function check(n)
{
for(k=0;k{
if (n== linksprint[k]) { return false;}
}
}
linksprint[0]=links[Math.round(9*Math.random())];
linksprint[1]=links[Math.round(9*Math.random())];
while(check(linksprint[1]==false)) {linksprint[1]=links[Math.round(9*Math.random())];}
linksprint[2]=links[Math.round(9*Math.random())];
while(check(linksprint[2]==false)) {linksprint[2]=links[Math.round(9*Math.random())];}
document.write(\'
\');
document.write("

"+linksprint[0]+"


");
document.write(linksprint[1]+"


");
document.write(linksprint[2]+"


");
document.write(\'
\');

Оффлайн Боря Елкин

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 59
  • +0/-0
  • 0
    • Просмотр профиля
    • http://webmetr.pips.ru
выбор ссылки из массива
« Ответ #1 : 19 Марта 2002, 20:33:58 »
Немного попытался по разбираться в алгоритме, но так и не въехал (быстро надоело).

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

var n=40; //количество итераций
for (var i=0; i<=n; i++){
    var x1=Math.round(links.length*Math.random());
    var x2=Math.round(links.length*Math.random());
    if (x1!=x2){
         меняем местами значения links[x1] и links[x2]
    }
}

выводим первые 3 (или сколько надо ссылок)

Чем больше количество итераций, тем лучше перемешается массив. 100% не будет повторений.

Оффлайн puh

  • Ни свой, ни чужой
  • Старожил
  • ****
  • Сообщений: 300
  • +0/-0
  • 2
    • Просмотр профиля
Вот рабочий вариант:
« Ответ #2 : 19 Марта 2002, 20:53:14 »





----------------
А вообще не рекомендую ставить переменную links[], так как имеется свойство document.links, возможны зависания...
Назови ее проще - a, например.
« Последнее редактирование: 19 Марта 2002, 21:07:55 от puh »
© Винни-Пух

Оффлайн MASe

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 171
  • +0/-0
  • 0
    • Просмотр профиля
    • http://drezna.chat.ru
спасибки!
« Ответ #3 : 20 Марта 2002, 10:23:13 »
буду эксперементировать ;-))

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28