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

Сообщение от Stroy
Есть 2-х мерный массив 9Х9. Хочу построчно заполнить его случайными числами в диапазоне 1-9. Каждая ячейка имеет свой id.
Запустите функцию function Peremeshivalka(9) - 9 раз(можно в цикле)
При каждом запуске получите массив случайный из 9 элементов

function Peremeshivalka(lng){
    var a = {},i,out=[],n=0;
    for(i=0;i<lng;i++)a[i]=i;
    while (n!=lng){
     i = Math.floor(lng*Math.random());
     if(typeof(a[i])!='undefined'){
        out.push(a[i]+1); //Добавил 1(чтобы не от 0)
        delete a[i];
        n++;
     }
    }
   return out;
 } 

var out =[];
for(var i=0;i<9;i++){ out.push(Peremeshivalka(9).join(','));}

alert(out.join(',\n'))
//

==========================
Хотя пост 9 делает тож самое не хуже
// Замерил на 10000 элементах - мой быстрее
(наверно splice(n,1)[0]; дольше, чем delete a[i];

Последний раз редактировалось Deff, 19.12.2015 в 22:50.
Ответить с цитированием