Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 29.07.2012, 16:45
Аспирант
Отправить личное сообщение для leny Посмотреть профиль Найти все сообщения от leny
 
Регистрация: 29.04.2011
Сообщений: 91

PashPP, а прокомментируйте пожалуйста вот эту часть кода
13 if (kol2 > num){
14 Num(num, kol, min);
15 return;
16 }
Ответить с цитированием
  #32 (permalink)  
Старый 29.07.2012, 16:50
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

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;// а так как в данной уже нет надобности её останавливаем
}

Последний раз редактировалось Dim@, 29.07.2012 в 16:53.
Ответить с цитированием
  #33 (permalink)  
Старый 29.07.2012, 17:23
Аспирант
Отправить личное сообщение для leny Посмотреть профиль Найти все сообщения от leny
 
Регистрация: 29.04.2011
Сообщений: 91

Сообщение от Dim@ Посмотреть сообщение
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;// а так как в данной уже нет надобности её останавливаем
}
Просто я заметил одну странную штуку, если второй параметр >= 8, функция частенько не срабатывает. При 8 и 9 иногда срабатывает, а вот при 10 и выше - нет.
Может вы знаете где ошибка?
Ответить с цитированием
  #34 (permalink)  
Старый 29.07.2012, 17:46
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

leny,
проблема в том что происходит зависание из-за частого срабатывания if-a - слишком мала вероятность правильного выпадания псевдо-случайных чисел
if (kol2 > num){ //если сумма всех псевдо-случайных чисел
Num(num, kol, min);//функция вызывается с данными аргументами
return;// а так как в данной уже нет надобности её останавливаем
}
Ответить с цитированием
  #35 (permalink)  
Старый 29.07.2012, 17:53
Аспирант
Отправить личное сообщение для leny Посмотреть профиль Найти все сообщения от leny
 
Регистрация: 29.04.2011
Сообщений: 91

Сообщение от Dim@
проблема в том что происходит зависание из-за частого срабатывания if-a - слишком мала вероятность правильного выпадания псевдо-случайных чисел
Обойти это никак нельзя?
Ответить с цитированием
  #36 (permalink)  
Старый 29.07.2012, 17:57
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от leny
Обойти это никак нельзя?
Можете использовать моё решение, выложенное выше в этой теме.
Ответить с цитированием
  #37 (permalink)  
Старый 29.07.2012, 18:08
Аватар для Dim@
Профессор
Отправить личное сообщение для Dim@ Посмотреть профиль Найти все сообщения от Dim@
 
Регистрация: 21.04.2012
Сообщений: 951

leny,
действительно - лучше использовать метод oneguy - плюсы
+более рандомный
+обходит данное препятствие
Ответить с цитированием
  #38 (permalink)  
Старый 29.07.2012, 21:03
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Обновил 2-ой алгоритм. Теперь число попадает с первого раза, его не приходится перегенерировать, что делает этот алгоритм быстрее и стабильнее.
Ответить с цитированием
  #39 (permalink)  
Старый 30.07.2012, 01:18
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от Maxmaxmахimus
это нормально или нужно с этим бороться?
По моему мнению, нужно бороться. Нужно, чтобы распределение результата было равномерное.
Ответить с цитированием
  #40 (permalink)  
Старый 30.07.2012, 02:17
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Maxmaxmахimus,
по идее число комбинаций целочисленных делителей ограничено
В идеале один раз рандомно выбирать из этого массива всех комбинаций
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать JavaScript ! Alamogoro Общие вопросы Javascript 4 24.05.2012 19:11
Помогите написать скрипт !!! Zander Элементы интерфейса 10 19.01.2012 14:40
Помогите плисс написать скрипт Gnusmus Events/DOM/Window 6 17.08.2011 15:51
Генератор случайных чисел. Помогите написать. Teenager Я не знаю javascript 5 05.01.2011 19:15
помогите написать аналог строки include("index.php?open=1") на js bushstas Общие вопросы Javascript 1 19.07.2009 02:48