Показать сообщение отдельно
  #2 (permalink)  
Старый 16.04.2013, 18:02
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

И в чем вопрос?
Надо отладить скрипт и исправить ошибки? Или же подсказать лучшее решение?
Ну для начала скажу, что выбрать случайное число в диапазоне min - max нужно не так. Ваш алгоритм плохой, т.к. вероятность выпадения min или max в два раза меньше, чем других чисел. Вот, взгляните:
var min = 1, max = 10, r, i, rCount = Array(max-min+1);

for( i = 0; i < rCount.length; ++i )
  rCount[i] = 0;

for( i = 0; i < 100000; ++i ) { // считаем количество выпадений
  r = Math.round((Math.random() * (max - min) + min));
  ++rCount[ r - min ];
}

for( i = 0; i < rCount.length; ++i ) // считаем вероятности
  rCount[i] /= 100000;

alert( rCount );

А вот если вместо
Math.round((Math.random() * (max - min) + min)) ;
написать
Math.floor( Math.random() * (max-min+1) + min ) ;
то шансы уровняются.
Ответить с цитированием