2013-09-02 3 views
0

В настоящее время у меня есть 64 значения (1-64), и каждое значение возвращает другой результат. У меня есть настройки массива с диапазоном чиселприсвоение x количеству случайных чисел массиву

var battleships = ['1', '2', '3', '6'] 

, которая связывает с

if ($.inArray(String($(this).data("value")), battleships) > -1) { 
    $(this).addClass("success").removeClass("pointer"); 
    } 

как бы я сделать Присвоить массив (например) 26 случайных чисел в диапазоне от 1 до 64, которые могут затем быть подхваченные утверждением if.

ответ

0

Вы можете иметь функцию, чтобы получить случайные числа между мин и макс, как это:

function getRandomBetween(min, max) { 
    return Math.random() * (max - min) + min; 
} 

И тогда вы можете цикл 64 раз, чтобы заполнить массив.

for (var i = 0; i < 64; i++) { 

    battleships.push(getRandomBetween(1, 64)); 
} 
0
function getDistinctNumbers(count) { 
    var values = []; 
    for (var i=1; i<=64; i++) 
    values.push(i); 

    values.sort(function(a,b){return Math.round(Math.random() * 2) -1;}); 
    values.length = count +1; 
    return values; 
} 

В основном вы заполняете массив со значениями, которые вы хотите, перемешайте его вокруг, а затем уменьшить его длину в соответствии с вашими потребностями. Если счетчик больше 64, массив будет дополняться значениями undefined.

Если ваши потребности меняются, и по какой-то причине 64 получает большое количество, а 24 остается относительно низким, будет проще просто добавить случайные числа и убедиться, что вы не добавляете дубликаты, чем сортировать случайным образом огромный массив, но на данный момент это самое быстрое решение.

Адрес JsBin с кодом: http://jsbin.com/UwAYACe/1/edit

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