2014-09-17 2 views
0

Я пытаюсь создать цикл для трех случайных наборов чисел, которые загружаются в три разных неупорядоченных списка.Массивы и случайные числа Javascript

В каждом списке должно быть три уникальных случайных числа. Я близок, однако мой код загружает одинаковые числа, и я пытался сделать цикл for, но он, похоже, загружает один и тот же массив, и мне нужны три случайных уникальных массива.

$(document).ready(function() { 
    var arr = []; 
    for (var i = 0, l = 4; i < l; i++) { 
     rand = Math.random(3, 7).toFixed(2); 
     arr.push('<li>' + 10 + rand * 1 + '</li>') 
     $("." + i).append(arr); 
    }; 
}); 

jsFiddle

+1

'Math.random' не принимает никаких аргументов? Что должны делать «3,7»? – Bergi

+1

Да, у вас есть только один 'arr', и загрузите тот же самый массив во все списки. Что еще вы ожидали? – Bergi

+0

Я думал, что 3,7 выберет число от 3 до 7. Я также думал о arr i ++, но не уверен, как это определить. – Blynn

ответ

1

@Bergi правильный. Если вам нужно число от 3 до 7, один способ его реализации - 3 + 4 * Math.random(), так как Math.random() вернет число от 0 до 1 (исключая 1).

Кроме того, если вы хотите, чтобы создать уникальный список для каждого ул, вы можете пройти по каждой ул и создать список для него, как, например:

var $lists = $(".1,.2,.3"); 
$lists.each(function(index, list) { 
    var arr = []; 
    for (var i = 0, l = 4; i < l; i++) { 
     rand = (3+4*Math.random()).toFixed(2); 
     arr.push('<li>'+10+ rand * 1+'</li>') 
    } 
    $(list).append(arr); 
}); 

Fiddle здесь: http://jsfiddle.net/qpnf7pog/2/

+0

Это замечательно, большое вам спасибо. – Blynn

0

Я думаю, что вы хотите сделать, это использовать var randomnumber=Math.floor(Math.random()*11). Вот документация: http://www.javascriptkit.com/javatutors/randomnum.shtml и Math.floor(): http://www.w3schools.com/jsref/jsref_floor.asp это позволит указать максимальное случайное число, максимально превышающее то, что после *.

1

Вы можете попробуйте следующее:

$(document).ready(function() { 
var arr = []; 
for (var i = 0, l = 1; l < 4; i++) { 
    if (i > 0 && i % 3 == 0) 
    { 
     $(".list"+l).append(arr); 
     arr = []; 
     l++; 
    } 

    rand = Math.floor(Math.random()*(7-3+1)+3); // random number between 3 and 7 
    arr.push('<li>'+ rand +'</li>'); 

}; 

});

http://jsfiddle.net/qpnf7pog/3/

Предполагая, что эти случайные числа должны быть в 3-7 диапазоне. Надеюсь, это поможет.

Смежные вопросы