Javascript 将整数拆分为随机数之和

Javascript 将整数拆分为随机数之和,javascript,math,Javascript,Math,假设我们有一个整数16 是否有一个函数,返回组成其总和的随机数数组 例如7 1 2 4 1或1 5 2 3 6 我想知道是否有一些优雅的方法可以在JavaScript中实现这一点。不,没有现有的函数,但例如: var n = 16; var a = []; while (n > 0) { var s = Math.round(Math.random()*n); a.push(s); n -= s; } a包含数组。我怀疑是否有用于此的库函数。你试过什么了吗?你需要多少?最简单

假设我们有一个整数16

是否有一个函数,返回组成其总和的随机数数组

例如7 1 2 4 1或1 5 2 3 6


我想知道是否有一些优雅的方法可以在JavaScript中实现这一点。

不,没有现有的函数,但例如:

var n = 16;
var a = [];
while (n > 0) {
  var s = Math.round(Math.random()*n);
  a.push(s);
  n -= s;
}

a
包含数组。

我怀疑是否有用于此的库函数。你试过什么了吗?你需要多少?最简单的解决方案是重复从范围
[1..n]
中获取一个数字,其中
n
是将“完成”总和的数字,但这将导致数字分布不均匀,谢谢。小错误-和数组中有零。为了避免它们,我将
Math.round(Math.random()*(number-1))+1