TypeScript:
การสร้างตัวเลขสุ่ม
วิธีการ:
ใน TypeScript คุณสามารถสร้างตัวเลขสุ่มได้โดยใช้วัตถุ Math
ทั่วโลก ด้านล่างเป็นตัวอย่างที่ใช้งานได้จริงในการสร้างตัวเลขสุ่มสำหรับความต้องการต่างๆ
การสร้างตัวเลขสุ่มพื้นฐาน
เพื่อการสร้างตัวเลขทศนิยมสุ่มระหว่าง 0 (รวม) และ 1 (ไม่รวม) คุณใช้ Math.random()
การดำเนินการนี้ไม่ต้องการการจัดการเพิ่มเติม:
const randomNumber = Math.random();
console.log(randomNumber);
อาจให้ผลลัพธ์เช่น 0.8995452185604771
.
การสร้างตัวเลขเต็มสุ่มระหว่างสองค่า
เมื่อคุณต้องการตัวเลขเต็มระหว่างสองค่าที่ระบุ คุณต้องใช้ Math.random()
ร่วมกับเลขคณิตบางอย่าง:
function getRandomInt(min: number, max: number): number {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
}
const randomInt = getRandomInt(1, 10);
console.log(randomInt);
อาจให้ผลลัพธ์เป็นค่าเต็มระหว่าง 1 และ 10 เช่น 7
.
การสร้างรหัสประจำตัวที่ไม่ซ้ำ
ตัวเลขสุ่มสามารถรวมกับวิธีอื่นๆ เพื่อสร้างรหัสประจำตัวที่ไม่ซ้ำ ตัวอย่างเช่น ส่วนของโค้ดผู้สร้าง UUID ง่ายๆ:
function generateUUID(): string {
return 'xxxxyxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
const r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
const uuid = generateUUID();
console.log(uuid);
สิ่งนี้สร้างสตริงที่คล้ายกับ UUID เช่น 110e8400-e29b-41d4-a716-446655440000
.
การศึกษาอย่างลึกซึ้ง
วิธีการหลักในการสร้างตัวเลขสุ่มใน JavaScript และใน TypeScript, Math.random()
, อาศัยตัวสร้างตัวเลขสุ่มเทียม (PRNG) สำคัญที่จะทราบว่า แม้ว่าผลลัพธ์อาจดูเป็นสุ่ม แต่พวกเขาถูกสร้างขึ้นโดยอัลกอริธึมประจำตัวที่พึ่งพาค่าเมล็ดเริ่มต้น ดังนั้น ตัวเลขที่สร้างโดย Math.random()
จึงไม่ใช่ตัวเลขสุ่มที่แท้จริงและไม่ควรใช้สำหรับวัตถุประสงค์ทางการเข้ารหัส
สำหรับตัวเลขสุ่มที่ปลอดภัยตามการเข้ารหัส, Web Crypto API นำเสนอ crypto.getRandomValues()
, ซึ่งสามารถเข้าถึงได้ในสภาพแวดล้อมที่รองรับมาตรฐาน Web Crypto รวมถึงเบราว์เซอร์สมัยใหม่และ Node.js (ผ่านโมดูล crypto
) นี่คือตัวอย่างที่ชัดเจนแสดงการใช้งานใน TypeScript เพื่อการสร้างตัวเลขสุ่มที่ปลอดภัยในช่วง:
function secureRandom(min: number, max: number): number {
const array = new Uint32Array(1);
window.crypto.getRandomValues(array);
return min + (array[0] % (max - min + 1));
}
const secureRandNum = secureRandom(1, 100);
console.log(secureRandNum);
วิธีนี้ให้ระดับของความสุ่มที่แข็งแกร่งกว่าและมีความเหมาะสมมากขึ้นสำหรับแอปพลิเคชันที่มีความไวต่อความปลอดภัย อย่างไรก็ตาม, วิธีนี้ยังใช้ทรัพยากรมากขึ้นและอาจไม่จำเป็นสำหรับงานที่ง่ายขึ้นเช่น การจำลองง่ายๆ หรือการสร้างค่าสุ่มที่ไม่สำคัญ