Помощник
|
Уникальность генерируемых чисел |
nikanor
|
Сообщение
#1
|
||
|
|
||
|
|||
Letmetouchyou |
8.3.2010, 15:54;
Ответить: Letmetouchyou
Сообщение
#2
|
|
<script>
var mas_gen_number = []; function generate_number(min, max){ if (mas_gen_number.length >= (max-min+1) ){ alert('сгенерированы все числа'); return 'сгенерированы все числа'; } var temp_number = Math.floor((Math.random())*(max+1 - min) + min); //временный массив //проверка повторений for(i=0; i<mas_gen_number.length; i++) if(temp_number == mas_gen_number[i]){ generate_number(min, max); //повторная генерация числа return false; } mas_gen_number.push(temp_number); //сохранить число в массив //alert(mas_gen_number.length) alert(temp_number); return temp_number; } </script> |
|
|
nikanor
|
Сообщение
#3
|
|
Letmetouchyou, Вы так и не ответили, где у меня ошибка. Функция работает, но иногда встречаются дубли. Объясните, пожалуйста, новичку, в чем ошибка логики в моей функции?
P.S.: немного подправил код функции. |
|
|
ZhukV |
8.3.2010, 17:35;
Ответить: ZhukV
Сообщение
#4
|
|
А где ты закрываеш цыкл for()? Вот и ошибка :goodpost:
Лучше сделать отельную функцию проверки значения в массиве, и забросить ее в прототип. mas_gen_number [mas_gen_number.length] = temp_number; Это не очень верно, относительно добавление значения в массив!!! mas_gen_number.push(temp_number) А вот это верно!!!! |
|
|
Letmetouchyou |
8.3.2010, 20:16;
Ответить: Letmetouchyou
Сообщение
#5
|
|
ZhukV, во первых ето не все и ето не ркитическая ошибка.
nikanor, суть в том что в //проверка повторений for(i=0; i<mas_gen_number.length; i++) if(temp_number == mas_gen_number[i]) generate_number(min_number, max_number); //повторная генерация числа следует не просто вызывать функцию а и заканчивать текущуюю. |
|
|
nikanor
|
Сообщение
#6
|
|
|
|
|
nikanor
|
Сообщение
#7
|
|
следует не просто вызывать функцию а и заканчивать текущуюю. Я бы с удовольствием, но если я верну false, то ячейка примет совсем не правильное значение. Вот фрагмент с вызовом функции: //заполнение ячеек
for (var j=0; j < quantity_cells; j++) document.all["cell" + i + j].innerHTML = generate_number(min_number, max_number); |
|
|
Letmetouchyou |
8.3.2010, 22:46;
Ответить: Letmetouchyou
Сообщение
#8
|
|
nikanor, пример который я дал рабочий )
посел ретёрна идет поторный вызов функции |
|
|
nikanor
|
Сообщение
#9
|
|
Letmetouchyou, последовал я Вашему совету:
//проверка повторений for(i=0; i<mas_gen_number.length; i++) if(temp_number == mas_gen_number[i]){ generate_number(min, max); //повторная генерация числа return false; } В результате, если встречаются дубли, то возвращается false, и вместо числового значения отображается false. |
|
|
nikanor
|
Сообщение
#10
|
|
Нашел выход из положения:
//генерация случайных чисел от min до max function generate_number(min, max){ while(true){ var double_number = false; //повторения отсутствуют var temp_number = min + Math.floor((max-min)*Math.random()); //генерация случайного числа //проверка повторений for(i=0; i<mas_gen_number.length; i++) if(temp_number == mas_gen_number[i]) double_number = true; //повторения присутствуют //повторения отсутствуют if (!double_number) break; } mas_gen_number [mas_gen_number.length] = temp_number; //сохранить число в массив return temp_number; } Принимавшим участие в решении моего вопроса жму "Спасибо". |
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Рерайт на заказ!, Уникальность от 95% Высокая уникальность текста. Большие объемы! |
10 | Akira | 4892 | 29.12.2015, 17:43 автор: Akira |
|
Какой сайт или программа хорошо проверяет текст на уникальность? | 24 | Albi | 4799 | 20.5.2015, 20:53 автор: Марина123 |
|
Как проверить контент на уникальность? | 8 | Димка_mw | 2077 | 20.5.2015, 10:32 автор: Triniti_Wel_mw |
|
Готовые статьи, высокая уникальность, женская тематика | 0 | ViktoriNa | 1145 | 9.5.2015, 0:27 автор: ViktoriNa |
|
Статьи на тематику: "Ремонт и благоустройcтво жилья". Уникальность 95% и выше | 2 | iroglify | 2175 | 4.4.2015, 3:27 автор: iroglify |
Текстовая версия | Сейчас: 20.4.2024, 20:35 |