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

рони,
Ок
================
// Тест средне-статистического числа повторов Math.random() на создание неповторяющегося массива из 1000 элементов
function indexRandom(lng){
    var numRnd = 0;
     var a = {},i,out=[],n=0; 
     while (n!=lng){
       i = Math.floor(lng*Math.random()); numRnd++;
       if(typeof(a[i])=='undefined'){
         a[i]=i; out.push(i);
         n++;
       }
     }
    return numRnd;
  }
function repeat(n){
  var N=0;n2=n
  while (--n2){
     N+= indexRandom(1000);
  }
  return N/n;
}
alert('N='+repeat(10000))


// Тест средне-статистического числа повторов Math.random() на создание неповторяющегося массива из 20 элементов
function indexRandom(lng){
    var numRnd = 0;
     var a = {},i,out=[],n=0; 
     while (n!=lng){
       i = Math.floor(lng*Math.random()); numRnd++;
       if(typeof(a[i])=='undefined'){
         a[i]=i; out.push(i);
         n++;
       }
     }
    return numRnd;
  }
function repeat(n){
  var N=0;n2=n
  while (--n2){
     N+= indexRandom(20);
  }
  return N/n;
}
alert('N='+repeat(10000))


// Тест средне-статистического числа повторов Math.random() на создание неповторяющегося массива из 10 элементов
function indexRandom(lng){
    var numRnd = 0;
     var a = {},i,out=[],n=0; 
     while (n!=lng){
       i = Math.floor(lng*Math.random()); numRnd++;
       if(typeof(a[i])=='undefined'){
         a[i]=i; out.push(i);
         n++;
       }
     }
    return numRnd;
  }
function repeat(n){
  var N=0;n2=n
  while (--n2){
     N+= indexRandom(10);
  }
  return N/n;
}
alert('N='+repeat(10000))

=======================
Зы: Примерная апроксимация кол-ва обращений к Math.random() по четырём точкам:
n - длина массива
x = n+n^1.26

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