我有一个奇怪的问题,javascript的最佳方式是什么,从大数字开始
var LargeNumber = 5234223;
拆分为数组
var SingleNumberArray = [];
但有一些限制:
出于这个原因,我不想多次使用相同的数字 我不想多次推送MaxValueInArray
var MaxValueInArray = 43;
为了使所有数组的总和为LargeNumber?
乍一看,我认为使用素数这可能很有用,但也许这是一个限制。所以也许更好的方法是创建一个从1到MaxValueArray的随机函数,每个循环生成一个数字,然后将它们推入数组,检查总和是否为起始数,如果不是推数并重新启动,直到数组的总和与起始编号相同,但在这一点上我认为最好检查剩下多少才能得到正确的匹配。因此,如果保持小于MaxValueInArray,我可以直接推送剩余的值。
问题在于我不知道如何写下这个功能。
是的,你有更好的想法吗?答案 0 :(得分: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);
&#13;