在 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 ]

預期輸出在每次執行時都不同。

更新時間: 24-11-2020

763 個瀏覽次數

開啟你的 職業生涯

完成課程以取得認證

開始
廣告