Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

แบ่งตัวเลขเป็น 4 ตัวเลขสุ่มใน JavaScript


เราต้องเขียนฟังก์ชัน JavaScript ที่รับตัวเลขเป็นอินพุทแรก และตัวเลขสูงสุดเป็นอินพุทที่สอง

ฟังก์ชันควรสร้างตัวเลขสุ่ม 4 ตัว ซึ่งเมื่อรวมกันควรเท่ากับตัวเลขที่ให้มาอินพุทแรก และไม่มีตัวเลขใดใน 4 ตัวนั้นเกินตัวเลขที่ให้มาอินพุทที่สอง

ตัวอย่างเช่น ถ้าอาร์กิวเมนต์ของฟังก์ชันคือ

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 ]

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