在 JavaScript 中將數字拆分為 4 個隨機數
我們需要編寫一個 JavaScript 函式,第一個輸入是數字,第二個輸入是最大數字。
該函式應生成四個隨機數,相加應等於作為第一個輸入提供給函式的數字,並且這四個數字中沒有一個應超過作為第二個輸入給出的數字。
例如 − 如果函式的引數為 −
const n = 10; const max = 4;
那麼,
const output = [3, 2, 3, 2];
是一個有效的組合。
請注意,允許重複數字。
示例
此程式碼為 −
const total = 10; const max = 4; const fillWithRandom = (max, total, len = 4) => { let arr = new Array(len); let sum = 0; do { for (let i = 0; i < len; i++) { arr[i] = Math.random(); } sum = arr.reduce((acc, val) => acc + val, 0); const scale = (total − len) / sum; arr = arr.map(val => Math.min(max, Math.round(val * scale) + 1)); sum = arr.reduce((acc, val) => acc + val, 0); } while (sum − total); return arr; }; console.log(fillWithRandom(max, total));
輸出
控制檯中的輸出為 −
[ 3, 3, 2, 2 ]
預期輸出在每次執行時都不同。
廣告