gpt4 book ai didi

javascript - 如何在数组中生成 N 个数字,这些数字的总和等于 0

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:39:52 29 4
gpt4 key购买 nike

我有这样的代码:

function myArr(N){

let arr = [];

function randomNumber(min,max) {
if (min > max) {
let vMin = min;
min = parseInt(max,10);
max = parseInt(vMin,10);
}
return Math.floor(Math.random()*(max-min+1)+min);
}

for(let i = 0; i < N; i++) {
arr.push(randomNumber(100,-100));
}
return arr;
}

此函数生成一个包含 N 个数字的数组。但我希望这些生成的数字的总和等于 0。如何实现?我在考虑条件“如果”,但我不完全知道,在这种情况下如何使用它......也许你们中的一些人知道,如何做到这一点?感谢您提供任何提示!

最佳答案

有很多方法可以生成一个由随机生成的值组成的数组,这些值加起来为零,但它们对值的分布都有不同的影响。

例如,一种简单的方法是先生成值并计算它们的平均值,然后从每个值中减去该平均值。这样做的结果是这些值可能会超出您最初想要的范围;例如,如果您随机生成 [100, 100, 100, -100],则平均值为 50,因此您最终会得到 [50, 50, 50, -150]。您可以通过从比实际需要更窄的范围开始来弥补这一点;但这意味着在该较窄范围内或附近的值比在整个范围末尾的值更有可能出现。

另一种简单的方法是仅生成 n/2 值,并且对于您生成的每个值,包括该值和它的算术逆(例如,如果你生成 37,那么你的结果将包括 37 和 -37)。然后你可以随机洗牌结果;因此,例如,如果您随机生成 [17, -84, 12],那么您的最终数组可能是 [-12, 17, -84, -17, 84, 12]。

. . .所有这些都是说您需要弄清楚您的确切要求。随机性很复杂!

关于javascript - 如何在数组中生成 N 个数字,这些数字的总和等于 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52446866/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com