Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

แยกตัวเลขออกเป็น 4 หมายเลขสุ่มใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชัน 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 ]

ผลลัพธ์คาดว่าจะแตกต่างกันในแต่ละรอบ