Ув. рони,
Ув. 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, время: 05:29. |