Вывести случайное число от 1 до 20
Добрый вечер!
Осваиваю javascript вторые сутки:) Возник такой вопрос: как 20 раз вывести случайное число от 1 до 20, но с учетом того, что повторять числа нельзя Пользователь нажимает на кнопку, при этом выводится случайная картинка, одна из 20, при следующем нажатии рядом выводится опять же случайная картинка из 19 оставшихся и так пока все 20 не будут выведены. дошел до такого, но как теперь сделать вывод случайного числа с учетом ранее выведенных не знаю
$('button').addEvents({'mouseover': function(){
--/обработка события/--
},
'mouseout': function(){
--/обработка события/--
},
'click': function(){
var randomKart = Math.floor( Math.random( ) * (20 - 1 + 1) ) + 1;
var element = new Element('img', {src: 'kart/'+randomKart+'.png'});
$(myDiv).adopt(element);
}
});
использовал mootools :help: |
var list = [];
function(){
if ( list.length == 0) {
for( var i = 1; i <= 20; i++ ) {
list.push( i );
}
}
var randomKart = list[ Math.floor( Math.random() * list.length ) ];
var element = new Element('img', {src: 'kart/'+randomKart+'.png'});
$(myDiv).adopt(element);
list.splice( randomKart, 1 );
}
|
Спасибо devote!!!
Как я понял реализовано так: 1.создали пустой массив 2.Проверяем массив на наличие данных, если пустой создаем там 20 элементов 3.выбираем случайный элемент из массива и используем в своих корыстных целях:)) 4.удаляем выбранный элемент из массива Еще раз спасибо! |
да именно
|
хотя я сделал ошибку, не корыстно =)
надо так:
var list = [];
function(){
if ( list.length == 0) {
for( var i = 1; i <= 20; i++ ) {
list.push( i );
}
}
var item_id = Math.floor( Math.random() * list.length ),
randomKart = list[ item_id ],
element = new Element('img', {src: 'kart/'+randomKart+'.png'});
$(myDiv).adopt(element);
list.splice( item_id, 1 );
}
|
var item_id = Math.floor( Math.random() * list.length ), не боишься, что индекс попадет в длину массива? вроде нет, не попадет. или шанс всё-таки есть ? 0 <= Math.random()*list.length <*!*=*/!* list.length |
Цитата:
|
Можно использовать еще вот такой способ, в нем не надо думать об индексах
for ( var list = [], i = 0; i < 20; ) {
list[ i ] = ++i;
}
list.sort(function(){ return Math.random() - .5; });
function() {
var element = new Element('img', {src: 'kart/' + list.shift() + '.png'});
$(myDiv).adopt(element);
}
|
melky, Math.random() никогда не вернёт 1.
|
Цитата:
уже посмотрел |
| Часовой пояс GMT +3, время: 08:12. |