PashPP, а прокомментируйте пожалуйста вот эту часть кода
13 if (kol2 > num){ 14 Num(num, kol, min); 15 return; 16 } |
leny,
если при создании случайных чисел их сумма больше максимального то функция заново выполняется с начальными аргументами и первая функция останавливается
for (var i = 0; i < kol; i++){
ar[i] = min + Math.round(Math.random() * obh);
kol2 += ar[i]; // сумма всех псевдо-случайных чисел
}
if (kol2 > num){ //если сумма всех псевдо-случайных чисел
Num(num, kol, min);//функция вызывается с данными аргументами
return;// а так как в данной уже нет надобности её останавливаем
}
|
Цитата:
Может вы знаете где ошибка? |
leny,
проблема в том что происходит зависание из-за частого срабатывания if-a - слишком мала вероятность правильного выпадания псевдо-случайных чисел if (kol2 > num){ //если сумма всех псевдо-случайных чисел Num(num, kol, min);//функция вызывается с данными аргументами return;// а так как в данной уже нет надобности её останавливаем } |
Цитата:
|
Цитата:
|
leny,
действительно - лучше использовать метод oneguy - плюсы +более рандомный +обходит данное препятствие |
Обновил 2-ой алгоритм. Теперь число попадает с первого раза, его не приходится перегенерировать, что делает этот алгоритм быстрее и стабильнее.
|
Цитата:
|
Maxmaxmахimus,
по идее число комбинаций целочисленных делителей ограничено В идеале один раз рандомно выбирать из этого массива всех комбинаций |
| Часовой пояс GMT +3, время: 06:12. |