Показать сообщение отдельно
  #1 (permalink)  
Старый 23.04.2012, 23:16
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Случайная пересортировка массива
Понадобилось сделать этакую штуку, решил сюда выложить:
var m = [1, 2, 3, 4, 5, 6]
  var done = m.slice()
  

  function resort(arr1) {
   var did = []

    sort1()

    function sort1() {
      var i = 0;
      do {

        var r1 = Math.random() * m.length | 0
        var r2 = Math.random() * m.length | 0
        var m1 = arr1[r1]
        var m2 = arr1[r2]
        arr1[r1] = m2
        arr1[r2] = m1
        did.push(r1)
        did.push(r2)
        i += 2

      } while (i != 6)
    }
  }


  function doCheck(arr3, arr4) {
    var repeat = 0;
    var max_repeat = Math.floor(arr4.length * 0.75)
    for (i = 0; i < arr3.length; i++) {
      for (k = 0; k < arr4.length; k++) {
        if (arr3[i] == arr4[k]) {
          ++repeat
          break;
        } else continue;
      }
    }
    if (repeat >= max_repeat) {
      resort(arr3)
    }
  }
  resort(m) // пересортировываем нужный массив
  doCheck(m, done) /* для параноиков проверяем, не получился ли массив похожим с исходным, для этого вначале нужно создать массив аналогичный исходному:var done = m.slice() */
  alert(m) // результат
  alert(done) // исходный массив

Скрипт конечно не доработан для общего пользования Но в будущем можно будет сделать как методы Array
__________________
оляля, ололо
Ответить с цитированием