在 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 ]
預期輸出在每次執行時都不同。
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP