คำตอบของ Dave กลับมาค่อนข้างดี แต่จะชี้แจงเพิ่มเติมเล็กน้อยเกี่ยวกับตัวเลือกที่สอง:
ตัวสร้างตัวเลขสุ่มฮาร์ดแวร์จริงใช้แหล่งเอนโทรปีทางกายภาพ แหล่งที่มาของเอนโทรปีอาจเป็นรังสีคอสมิค, เสียงทางไฟฟ้า, เอฟเฟกต์ avanlanche จากไดโอดแบบลำเอียงแบบย้อนกลับ (หรือ BJT ทรานซิสเตอร์), วงจร chua เป็นต้นแหล่งที่มาของเอนโทรปีที่น้อยลง แหล่งเอนโทรปีในอุดมคติคือการใช้เอฟเฟกต์ฟิสิกส์ควอนตัมหรือสิ่งที่ไม่สามารถจำลองด้วยสมการที่กำหนดขึ้นได้
ปัจจัยสำคัญอีกประการหนึ่งที่มีตัวสร้างตัวเลขสุ่มคือแหล่งเอนโทรปีอาจสร้างเอนโทรปีในจำนวนที่ จำกัด ต่อหน่วยของเวลา ตัวอย่างที่ดีคือวงจร chua: ในขณะที่มันสุ่มค่อนข้างมันมีความเร็วต่ำมากและไม่สามารถใช้สำหรับการใช้งานจริง
ในโปรเซสเซอร์ / ไมโครคอนโทรลเลอร์หลายตัวที่มี RNG ในตัวนาฬิกาจะเลื่อนจาก 2 เป็น 4 นาฬิกาซึ่งใช้การซิงโครไนซ์อย่างไม่ถูกต้อง จากนั้นพวกเขาใช้ทั้งตัวกรองแบบแอนะล็อกและดิจิทัลเพื่อสุ่มรูปแบบและการเปลี่ยนแปลงในผลลัพธ์มากขึ้นในการลงทะเบียน การดำเนินการกรองดังกล่าวต้องใช้สองสามรอบซึ่งจะอธิบายจำนวนรอบต่ำสุดที่ต้องการในนาฬิกาที่กำหนดก่อนที่จะมีค่าใหม่กว่านี้
นาฬิกาลอยไม่ได้เป็นผลกระทบเชิงควอนตัมดังนั้นมันอาจจะเป็นแบบจำลอง แต่มันก็สุ่มพอเพราะมันขึ้นอยู่กับพารามิเตอร์จำนวนมากเช่นอุณหภูมิกระบวนการซิลิกอนความถี่ของการทำงานเสียงไฟฟ้าการแผ่รังสีพื้นหลัง ฯลฯ .
ในแอปพลิเคชันที่ฮาร์ดแวร์ RNG ไม่มีปริมาณงานเพียงพอ (เช่นในแอปพลิเคชันเข้ารหัสที่มีความต้องการสูง) เป็นเรื่องปกติที่จะใช้ฮาร์ดแวร์ RNG เป็นเมล็ดสำหรับเครื่องกำเนิดเลขสุ่มแบบหลอกเช่นฟังก์ชัน rand () ใน sdtlib อย่างไรก็ตามแอปพลิเคชันดังกล่าวมักจะให้การใช้งาน rand () ที่ดียิ่งขึ้นซึ่งออกแบบมาโดยเฉพาะเพื่อเรียกใช้จากเมล็ดซึ่งอาจถูกทิ้งบ่อยครั้งมากด้วยค่าสุ่มที่แท้จริง ในโปรเซสเซอร์ Intel รุ่นใหม่ที่มาพร้อมกับฮาร์ดแวร์ RNGs ส่วนอัลกอริธึมแบบหลอกเทียมจะรวมอยู่ในซิลิคอนโดยตรงจึงดำเนินการโดยฮาร์ดแวร์ทำให้มีอัตราการสุ่มสูงมาก
หากคุณคำนึงถึงวิธีการแรนด์ () ด้วยตัวเองมันเป็นเพียงการแสดงออกทางเมทิลซึ่งถูกออกแบบมาเพื่อสร้างเอนโทรปีจำนวนมาก มีขนาดใหญ่พอที่จะขึ้นอยู่กับแอปพลิเคชัน: สำหรับรุ่นคีย์การเข้ารหัสการสุ่มจำเป็นต้องมีคุณภาพสูงกว่าซึ่งการสุ่มต้องใช้การสุ่มแบบสุ่มง่าย ๆ ในเครื่องเล่นเพลงที่คุณชื่นชอบ เห็นได้ชัดว่ายิ่งคุณภาพของเอาต์พุตแบบสุ่มสูงเท่าไรค่าใช้จ่ายในการคำนวณของหมายเลขแบบสุ่มก็จะสูงขึ้น
การดำเนินการที่เกี่ยวข้องกับการสุ่มหมายเลขค่อนข้างคล้ายกับที่เกี่ยวข้องกับการคำนวณ MD5 แฮชของไฟล์: พวกเขาพยายามที่จะใช้เอฟเฟกต์หิมะถล่มบิตเพื่อให้การเปลี่ยนแปลงบิตเดียวในค่าเมล็ดเปลี่ยนรูปแบบการสร้างทั้งหมด ในฐานะที่เป็นข้อความด้านข้างฉันไม่แนะนำให้ใช้ MD5 เป็นตัวสร้างตัวเลขแบบหลอก มันเป็นเพียงตัวอย่าง มันจะมีทั้งที่ไม่มีประสิทธิภาพและไม่สุ่มเลย แต่ประเด็นก็คือถ้าคุณป้อนไฟล์เดียวกันไปยังอัลกอริทึมที่มี MD5 คุณจะได้รับเอาต์พุตที่กำหนดไว้เหมือนกันเสมอในแบบเดียวกับที่คุณจะได้รับผลลัพธ์เดียวกัน ฟังก์ชั่น rand () ถ้าคุณป้อนเมล็ดเดียวกันเว้นแต่ว่าการใช้งานของคุณขึ้นอยู่กับองค์ประกอบบางอย่างเช่นเวลาปัจจุบัน