2016-08-03 3 views
-2

Я странный вопрос, что это лучший способ, JavaScript, начиная с большого числаJavascript разделить большое количество простых чисел в массив

var LargeNumber = 5234223; 

Чтобы разбить на массив

var SingleNumberArray = []; 

Но с некоторого предела:

  1. Я не хочу, что любое число в массиве более, что X
  2. Я не хочу использовать Су много раз один и тот же номер, по этой причине я не хочу, чтобы подтолкнуть MaxValueInArray Су много раз

    вар MaxValueInArray = 43;

Для того, чтобы сумма всего массива была равна LargeNumber?

На первый взгляд, я думаю, что это может быть полезно использовать простое число, но, возможно, это предел. Поэтому лучше всего создать случайную функцию от 1 до MaxValueArray, чтобы каждый цикл сгенерировал число и перед тем, как вставить их в массив, проверьте, является ли сумма стартовым номером, если не нажимать номер и не перезапускать, до суммы массива это то же самое, что и начальный номер, но на данный момент я думаю, лучше проверить, сколько осталось иметь правильный матч. Поэтому, если вы останетесь меньше, чем MaxValueInArray, я могу напрямую нажать оставшееся значение.

Проблема в том, что я не знаю, как записать эту функцию.

Кстати, у вас есть идея?

+0

Почему Разве вы не толкать MaxValueInArray, пока остаток не менее MaxValueInArray и нажать остальные? – juvian

+0

Только потому, что я не хочу иметь в нем все одинаковые числа, возможно, я не говорю об этом: D –

+0

Ну, тогда идея такая же, но нажатие случайного числа между 1 и MaxValueInArray – juvian

ответ

1

Будьте осторожны, это может быть интенсивным в вычислительном плане.

Каждое число является случайным между 0 и числом вы установите

var LargeNumber = 5234223; 
 
var MaxValueInArray = 43; 
 
var MinValueInArray = 1; 
 
var SingleNumberArray = []; 
 

 

 
while (LargeNumber !== 0) { 
 
    let n = Math.floor(Math.random() * (MaxValueInArray - MinValueInArray + 1)) + MinValueInArray; 
 
    if (LargeNumber -n < 0) continue; 
 
    LargeNumber -= n; 
 
    SingleNumberArray.push(n); 
 
} 
 

 
console.log(5234223 === SingleNumberArray.reduce((i, j) => i + j)) 
 
console.log(SingleNumberArray);

+0

Tnx есть вероятность того, что случайное число начнется с 1 или из определенного var? –

+0

@JormanFranzini конечно, см. Обновленный ответ – rpadovani

+0

Ty, я думаю, что это хороший подход! –

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