Computer >> Máy Tính >  >> Lập trình >> Javascript

Chia số thành 4 số ngẫu nhiên trong JavaScript


Chúng tôi bắt buộc phải viết một hàm JavaScript nhận một số làm đầu vào đầu tiên và một số tối đa làm đầu vào thứ hai.

Hàm phải tạo ra bốn số ngẫu nhiên, khi tổng phải bằng số được cung cấp để hoạt động như đầu vào đầu tiên và cả bốn số đó không được vượt quá số đã cho làm đầu vào thứ hai.

Ví dụ - Nếu các đối số của hàm là -

const n = 10;
const max = 4;

Sau đó,

const output = [3, 2, 3, 2];

là một kết hợp hợp lệ.

Lưu ý rằng cho phép lặp lại các số.

Ví dụ

Mã cho điều này sẽ là -

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));

Đầu ra

Và đầu ra trong bảng điều khiển sẽ là -

[ 3, 3, 2, 2 ]

Đầu ra dự kiến ​​sẽ khác nhau trong mỗi lần chạy.