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

почему через раз работает?
Вот этот код, по задумке выдает числа 1-25 в хаотичном порядке, и работает в песочнице через раз...
(не надо писать, что генератор перемешивания можно в 1 строчку написать, нужен именно этот код! )
Да, и пока что он работает не правильно, но думаю сам догонюсь, уже 5 дней работаю над ним...
Но тем не менее, запускается только некоторые разы... ???

var arr=[1,2]                                     // добавил в массив 2 аргумента, в конце их просто выкину
ra()                                              // собственно запуск всей программы
function ra(){
              function rand() {                   // 2 - запуск random - генератор 1-25
                              a=Math.random()     // a=случайное число от 0-1
                              a=a+""              // а - переводу в строку
                              a=+a.slice(2,4)     // беру из строки 2 символа, получаю число 0-99
                              }
              do {rand()}                      // 1 - выполнение random пока не попадем в интервал 1-25
              while (a>25);
              if (a==0){do {rand()}        // если сгенерился 0, он не нужен, то заново random
                        while (a==0)}
              else {prov(a)};                  // если попали в интервал 1-25, запускаем проверку, есть ли в массиве число
              }
function prov(t){                                      // 3 - ф-ия проверки в массиве числа
                  var sh=1                               // счетчик количества проверяемых эл-ов в массиве
                  for (var k in arr)                     // перебор массива 
                                    {
                                    var ind = arr[k]              // ind делаю = эл-нт массива
                                    if (t==ind) { ra() }             // если число уже есть в массиве, запуск random
                                    if (sh>=arr.length) {dob(t)}   // если проверен весь массив, запуск ф-ии добавления в массив
                                    else {sh=++sh}                 //если эл-нт массива проверен и его нет, то счетчик+1, и след.эл-т проверяется
                                    }
                 }
function dob(tr){                      // 4 - ф-ия добавления в массив
                arr.push(tr)             // если сюда попало число, то его 100% нет в массиве, и сразу добавляется в массив
                if (arr.length>=25)    // если массив уже = 25, что и требовалось
                   {arr.splice(3,10);   // то отбрасываем первые 2 ненужных эл-та и отображаем 10 (позже 25 сделаю)
                   document.write(arr)} // готовый массив отображаем
                else { ra() }               // если массив <25 эл-ов, то запускаем генерацию числа random
               }

Последний раз редактировалось Marwell, 25.07.2011 в 10:05.
Ответить с цитированием