Ув. рони,
Ув. Deff, объясните пожалуйста чем плох код, предложенный Ruslan_xDD в этом посте? То, что он предложил легко читается и очевидное решение. А ваши решения выглядят со стороны как навороты. Только без обид. Просто любопытно |
Цитата:
Автор уже доволен, но применяемый код мон вылизать. Где-то был даж спец. топик с такими скриптами-задачками ================================== К примеру у нас с Рони как то была задача протестить код на миллионе повторов. При неотлизанном коде - это часы... К примеру тот жа Math.random() на массиве в 10 элементов вызывается средне=статистически при таких функциях неповторяющейся выборки 29 раз - на 20 - 70 при дальнейшем увеличении массива растёт в какой-то степени(посколь попадает в уже выбранные значения) Т.е. время на коротких массивах растёт вдвое-втрое |
Цитата:
|
Цитата:
====================== |
EmperioAf,
код Ruslan_xDD генерирует числа Math.random более 20 раз чтоб избежать повторов, мой код генерирует только 20 раз и без повторов. |
Deff,
в консоли посмотри :) |
рони,
Ок :( ================
// Тест средне-статистического числа повторов 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 |
Цитата:
|
рони,
СПС, - я понял, тут отвлекают(отхожу от компа + возгорелся протестить: А скок реально рандомов лишних ? ) поэтому долго с правкой того поста |
рони,
А эту феньку видел ?
function abc(arr){
var a = arr.splice(0,3);
}
var arr = [1,2,3];
abc(arr);
alert('>'+arr+'<')
function abc(arr){
function abcd(ar2){
var a = ar2.splice(0,3);
}
abcd(arr)
}
var arr = [1,2,3];
abc(arr);
alert('>'+arr+'<')
function abc(arr){
arr=[];
}
var arr = [1,2,3];
abc(arr);
alert('>'+arr+'<')
|
| Часовой пояс GMT +3, время: 08:46. |