рони, то же что у jsnb, только в профиль. Опять потенциально бесконечный цикл, при неудачном рандоме. И чем массив долинее тем шансы на это больше.
|
Aetae, а если так оформить рендом.... все равно может в бесконечность уйти ?
var random = Math.round(min - 0.5 + Math.random()*(max-min+1)); |
Aetae,
:) <script language="JavaScript" type="text/javascript"> function random(val,min,max,l) {var arr = [],m = [],n = void(0), len = max-min; l--; if (len < l) return; for (var i=0; i<= len; i++){ m[i] = i + min; m[i] == val && (n = i); } n != void(0) && m.splice(n,1) for (var i=0; i<l; i++) {n = Math.floor(Math.random()*(m.length)); arr[i]=m.splice(n,1);}; n = Math.floor(Math.random()*(arr.length)); arr.splice(n,0,val) return arr } document.write(random(3,0,20,4)) </script> источник ))) |
рони, вот, другое дело. Кончено при слишком большом диапазоне в памяти будет висеть гигантский массив, и я всё ещё считаю свой вариант лучше, но хоть так.)
|
Цитата:
Цитата:
|
рони,
Пока есть среди уже подобранных(и отсортированных) числа меньше или равные числу сгенерированному на текущей итерации - инкрементируем оное. Т.о. не допускается повторов, и при этом соблюдается нормальное распределение. В моём коде две проблемы: наличие дублирующего, но отсортированного массива и использование условно-медленного splice. |
Часовой пояс GMT +3, время: 16:40. |