Javascript 将多个整数随机化为相等变量

Javascript 将多个整数随机化为相等变量,javascript,html,integer,Javascript,Html,Integer,使用JavaScript,我如何生成30个随机整数,并使这30个整数的总和为60000?我需要脚本在每次运行时生成一组不同的数字,确保总数始终为60000 var n = 30; var total = 60000; var min = 10; var max = 5000; for (i = 0; i < n; i++) { // Math.floor(Math.random()*(max-min+1)+min); ?? } var n=30; var总计=60000; va

使用JavaScript,我如何生成30个随机整数,并使这30个整数的总和为60000?我需要脚本在每次运行时生成一组不同的数字,确保总数始终为60000

var n = 30;
var total = 60000;
var min = 10;
var max = 5000;

for (i = 0; i < n; i++) { 
  // Math.floor(Math.random()*(max-min+1)+min); ??
} 
var n=30;
var总计=60000;
var最小值=10;
var max=5000;
对于(i=0;i

为了避免数字过大或过小,可能需要最小值和最大值

您可以尝试以下方法:

思维方式
  • 接受最大总数和结果数的总数
  • 现在,根据
    n-1
    随机数的
    number-1
    循环,最后一个值应该是
    max-currentSum
    。由于其余的数字是随机的,所以这个差值也将是随机的,这也将确保总数相等
  • 现在,您需要做的就是根据给定的范围返回一个随机数
我还添加了一个标志来检查唯一值。目前,我刚刚添加了
1
,但这并不能确保它的唯一性,但由于它超出了范围,因此无法纠正它

代码

函数getRandomInRange(最大值){
var raiseVal=Math.pow(10,(最大toString().length-1)| | 1);
返回Math.floor(Math.random()*raiseVal)%max;
}
函数getRandomNumbers(最大,n,唯一){
var nums=[];
var总和=0;
对于(变量i=0;i-1){
r+=1;
}
推力(右)
总和+=r;
}
推力(最大和);
console.log(nums)
返回nums
}
GetRandomNumber(3,3,真)
GetRandomNumber(3,3)
GetRandomNumber(1000,10)

GetRandomNumber(600000,30)
是。这不是语言问题,而是逻辑问题。一旦你有了algo,你可以用任何语言来实现这一点。另外,如果这是粗鲁的话,很抱歉,但是您的销售代表的用户应该知道问题的要点部分。关于数字的范围或一致性,您还有其他要求吗?要使所有的数字完全随机有些困难,因为如果生成29个数字,最后一个数字就不能再随机了,因为它必须正好是60000(前29个数字的总和)。如果你想要真正的随机数和分布,就必须采用其他方法。没有其他要求。在每次循环之后,您不能将总数减少上一个随机整数吗?当n=30时。余数=60000——29个整数是的,就像我说的。最后一个数字不会是随机的。平均而言,它可能比其他数字小得多或大得多。根据结果的一致性,您可以提出一些动态规划解决方案,将随机数限制在某个范围内,循环的每次迭代取决于您得到的结果。结果不是一致随机的,正如您在上一次测试中所看到的:几乎每次您在开始时得到大数字,在结束时得到小数字。但是既然OP说在这方面没有要求,那么也许这符合他们的目的。@JJJ是的。就连我也注意到在你之前的评论之后。