Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.08.2011, 23:54
Новичок на форуме
Отправить личное сообщение для beliykot Посмотреть профиль Найти все сообщения от beliykot
 
Регистрация: 23.08.2011
Сообщений: 2

Вывести случайное число от 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
Ответить с цитированием
  #2 (permalink)  
Старый 24.08.2011, 00:04
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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, 24.08.2011 в 00:07.
Ответить с цитированием
  #3 (permalink)  
Старый 24.08.2011, 00:23
Новичок на форуме
Отправить личное сообщение для beliykot Посмотреть профиль Найти все сообщения от beliykot
 
Регистрация: 23.08.2011
Сообщений: 2

Спасибо devote!!!
Как я понял реализовано так:
1.создали пустой массив
2.Проверяем массив на наличие данных, если пустой создаем там 20 элементов
3.выбираем случайный элемент из массива и используем в своих корыстных целях)
4.удаляем выбранный элемент из массива

Еще раз спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 24.08.2011, 00:32
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

да именно
Ответить с цитированием
  #5 (permalink)  
Старый 24.08.2011, 00:34
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

хотя я сделал ошибку, не корыстно =)
надо так:
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 ); 
}
Ответить с цитированием
  #6 (permalink)  
Старый 24.08.2011, 10:50
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

var item_id = Math.floor( Math.random() * list.length ),


не боишься, что индекс попадет в длину массива? вроде нет, не попадет. или шанс всё-таки есть ?

0 <= Math.random()*list.length <*!*=*/!* list.length
Ответить с цитированием
  #7 (permalink)  
Старый 25.08.2011, 17:51
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от melky
не боишься, что индекс попадет в длину массива?
Хз, миллион раз так делал, вроде не попадал
Ответить с цитированием
  #8 (permalink)  
Старый 26.08.2011, 12:53
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Можно использовать еще вот такой способ, в нем не надо думать об индексах
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); 
}
Ответить с цитированием
  #9 (permalink)  
Старый 26.08.2011, 14:40
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

melky, Math.random() никогда не вернёт 1.
Ответить с цитированием
  #10 (permalink)  
Старый 26.08.2011, 20:08
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от B@rmaley.e><e Посмотреть сообщение
melky, Math.random() никогда не вернёт 1.
e [0, 1);

уже посмотрел
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбить число на миссив, как ? Bogdan808 Общие вопросы Javascript 20 01.09.2010 18:19
Случайное число в цикле sanhai Events/DOM/Window 15 11.04.2010 06:12
Если число от x до y, то вывести текст Rasie1 Общие вопросы Javascript 6 02.02.2010 18:28
jquery - случайное число ivanweb jQuery 1 07.09.2009 13:29
Случайное число. nazarov1947 Общие вопросы Javascript 18 25.08.2009 14:34