Показать сообщение отдельно
  #1 (permalink)  
Старый 04.11.2012, 18:16
Новичок на форуме
Отправить личное сообщение для mindkilla Посмотреть профиль Найти все сообщения от mindkilla
 
Регистрация: 04.11.2012
Сообщений: 7

Проблема с отбором чисел из массива
m разных случайных целых чисел из диапазона [a,b]

function random_nums() { 
var handler = "var a = document.sub_window.a.value;" +
"if (isNaN(a) || !a) {alert('Введите число A!'); return;}" + 
"var b = document.sub_window.b.value;" +
"if (isNaN(b) || !b) {alert('Введите число B!'); return;}" + 
"var m = document.sub_window.m.value;" +
"if (isNaN(m) || !m) {alert('Введите число m!'); return;}" +
"var mapTrue = new Array(); var outSet = ''; var num = 0;" +
"for (var i = 0; i < m; i++) {" +
"num = Math.floor(Math.random() * ((b - a)+a)); if (mapTrue[num]) continue; outSet = outSet + (i == 0 ? ' ' : ',') + num; mapTrue[num] = true;}" +
"alert(outSet);";
var str = 'A: <INPUT type="text" value="1" size="25" name="a"/><BR>' +
'B: <INPUT type="text" value="1" size="25" name="b"/><BR>' +
'm: <INPUT type="text" value="1" size="25" name="m"/><BR>' +
'<INPUT type="button" value="Получить набор целых чисел..." onClick="' + handler + '"/>';

windowTemplate("Получите, если это возможно, m разных случайных целых чисел из диапазона [a,b]", str);
}


без этих строчек: var mapTrue = new Array() и if (mapTrue[num]) continue числа начинают повторятся, а с ними выборка получается на больше чем нужно. Помогите в чем ошибка
Ответить с цитированием