function allocateScores (totalAmount) { // 基准值(总额为1000时的分配值) const baseValues = { 1: 6, 3: 20, 5: 42, 7: 72, 9: 110, 11: 138, 13: 150, 15: 146, 17: 126, 19: 90, 21: 56, 23: 30, 25: 12, 27: 2 };
const ratio = totalAmount / 1000;
const result = {}; let totalCheck = 0; // 用于验证总和
for (const key in baseValues) { const value = Math.round (baseValues[key] * ratio); result[key] = value; totalCheck += value; }
// 校准总和误差(可选) const diff = totalAmount - totalCheck; if (diff !== 0) { // 将误差加到最大的分配项 const maxKey = Object.keys (result).reduce ( (a, b) => result[a] > result[b] ? a : b); result[maxKey] += diff; }
return result;
}
|