ความแตกต่างระหว่างฟังก์ชั่น rand () และอุปกรณ์ต่อพ่วง RNG (ตัวสร้างตัวเลขสุ่ม) คืออะไร?


9

ฉันสงสัยว่าอุปกรณ์ต่อพ่วง RNG (ตัวสร้างตัวเลขสุ่ม) ใน STM32F4XXXX MCUs ดูในคู่มืออ้างอิงนี้ (หน้า 748) ในทางกลับกันเรามีฟังก์ชั่น rand () ในไลบรารี stdlib ที่ทำหน้าที่เดียวกัน ตอนนี้ฉันมีสองคำถาม:

  1. อะไรคือความแตกต่าง (ข้อดีและข้อเสีย) ระหว่างฟังก์ชั่น rand () และอุปกรณ์ต่อพ่วง RNG (หมายเลขสุ่ม)?
  2. ดูส่วนนี้:

คุณสมบัติ

โปรดอธิบายเกี่ยวกับตัวเลือกทั้งสองนี้ (โดยเฉพาะตัวเลือกที่สอง)

คำตอบ:


12

คำตอบของ Dave กลับมาค่อนข้างดี แต่จะชี้แจงเพิ่มเติมเล็กน้อยเกี่ยวกับตัวเลือกที่สอง:

ตัวสร้างตัวเลขสุ่มฮาร์ดแวร์จริงใช้แหล่งเอนโทรปีทางกายภาพ แหล่งที่มาของเอนโทรปีอาจเป็นรังสีคอสมิค, เสียงทางไฟฟ้า, เอฟเฟกต์ avanlanche จากไดโอดแบบลำเอียงแบบย้อนกลับ (หรือ BJT ทรานซิสเตอร์), วงจร chua เป็นต้นแหล่งที่มาของเอนโทรปีที่น้อยลง แหล่งเอนโทรปีในอุดมคติคือการใช้เอฟเฟกต์ฟิสิกส์ควอนตัมหรือสิ่งที่ไม่สามารถจำลองด้วยสมการที่กำหนดขึ้นได้

ปัจจัยสำคัญอีกประการหนึ่งที่มีตัวสร้างตัวเลขสุ่มคือแหล่งเอนโทรปีอาจสร้างเอนโทรปีในจำนวนที่ จำกัด ต่อหน่วยของเวลา ตัวอย่างที่ดีคือวงจร chua: ในขณะที่มันสุ่มค่อนข้างมันมีความเร็วต่ำมากและไม่สามารถใช้สำหรับการใช้งานจริง

ในโปรเซสเซอร์ / ไมโครคอนโทรลเลอร์หลายตัวที่มี RNG ในตัวนาฬิกาจะเลื่อนจาก 2 เป็น 4 นาฬิกาซึ่งใช้การซิงโครไนซ์อย่างไม่ถูกต้อง จากนั้นพวกเขาใช้ทั้งตัวกรองแบบแอนะล็อกและดิจิทัลเพื่อสุ่มรูปแบบและการเปลี่ยนแปลงในผลลัพธ์มากขึ้นในการลงทะเบียน การดำเนินการกรองดังกล่าวต้องใช้สองสามรอบซึ่งจะอธิบายจำนวนรอบต่ำสุดที่ต้องการในนาฬิกาที่กำหนดก่อนที่จะมีค่าใหม่กว่านี้

นาฬิกาลอยไม่ได้เป็นผลกระทบเชิงควอนตัมดังนั้นมันอาจจะเป็นแบบจำลอง แต่มันก็สุ่มพอเพราะมันขึ้นอยู่กับพารามิเตอร์จำนวนมากเช่นอุณหภูมิกระบวนการซิลิกอนความถี่ของการทำงานเสียงไฟฟ้าการแผ่รังสีพื้นหลัง ฯลฯ .

ในแอปพลิเคชันที่ฮาร์ดแวร์ RNG ไม่มีปริมาณงานเพียงพอ (เช่นในแอปพลิเคชันเข้ารหัสที่มีความต้องการสูง) เป็นเรื่องปกติที่จะใช้ฮาร์ดแวร์ RNG เป็นเมล็ดสำหรับเครื่องกำเนิดเลขสุ่มแบบหลอกเช่นฟังก์ชัน rand () ใน sdtlib อย่างไรก็ตามแอปพลิเคชันดังกล่าวมักจะให้การใช้งาน rand () ที่ดียิ่งขึ้นซึ่งออกแบบมาโดยเฉพาะเพื่อเรียกใช้จากเมล็ดซึ่งอาจถูกทิ้งบ่อยครั้งมากด้วยค่าสุ่มที่แท้จริง ในโปรเซสเซอร์ Intel รุ่นใหม่ที่มาพร้อมกับฮาร์ดแวร์ RNGs ส่วนอัลกอริธึมแบบหลอกเทียมจะรวมอยู่ในซิลิคอนโดยตรงจึงดำเนินการโดยฮาร์ดแวร์ทำให้มีอัตราการสุ่มสูงมาก

หากคุณคำนึงถึงวิธีการแรนด์ () ด้วยตัวเองมันเป็นเพียงการแสดงออกทางเมทิลซึ่งถูกออกแบบมาเพื่อสร้างเอนโทรปีจำนวนมาก มีขนาดใหญ่พอที่จะขึ้นอยู่กับแอปพลิเคชัน: สำหรับรุ่นคีย์การเข้ารหัสการสุ่มจำเป็นต้องมีคุณภาพสูงกว่าซึ่งการสุ่มต้องใช้การสุ่มแบบสุ่มง่าย ๆ ในเครื่องเล่นเพลงที่คุณชื่นชอบ เห็นได้ชัดว่ายิ่งคุณภาพของเอาต์พุตแบบสุ่มสูงเท่าไรค่าใช้จ่ายในการคำนวณของหมายเลขแบบสุ่มก็จะสูงขึ้น

การดำเนินการที่เกี่ยวข้องกับการสุ่มหมายเลขค่อนข้างคล้ายกับที่เกี่ยวข้องกับการคำนวณ MD5 แฮชของไฟล์: พวกเขาพยายามที่จะใช้เอฟเฟกต์หิมะถล่มบิตเพื่อให้การเปลี่ยนแปลงบิตเดียวในค่าเมล็ดเปลี่ยนรูปแบบการสร้างทั้งหมด ในฐานะที่เป็นข้อความด้านข้างฉันไม่แนะนำให้ใช้ MD5 เป็นตัวสร้างตัวเลขแบบหลอก มันเป็นเพียงตัวอย่าง มันจะมีทั้งที่ไม่มีประสิทธิภาพและไม่สุ่มเลย แต่ประเด็นก็คือถ้าคุณป้อนไฟล์เดียวกันไปยังอัลกอริทึมที่มี MD5 คุณจะได้รับเอาต์พุตที่กำหนดไว้เหมือนกันเสมอในแบบเดียวกับที่คุณจะได้รับผลลัพธ์เดียวกัน ฟังก์ชั่น rand () ถ้าคุณป้อนเมล็ดเดียวกันเว้นแต่ว่าการใช้งานของคุณขึ้นอยู่กับองค์ประกอบบางอย่างเช่นเวลาปัจจุบัน


7

ความแตกต่างที่สำคัญคือว่าrand()ฟังก์ชั่นห้องสมุดเป็นpseudorandomเครื่องกำเนิดไฟฟ้าจำนวน - รับใด ๆ เริ่มต้นโดยเฉพาะอย่างยิ่ง (เมล็ด) มูลค่าก็มักจะผลิตลำดับเดียวกันของตัวเลข

ในทางกลับกันอุปกรณ์ต่อพ่วง RNG เป็นตัวสร้างตัวเลขสุ่มจริงและมันจะสร้างลำดับของตัวเลขที่ไม่สามารถทำซ้ำได้


ขอบคุณ และตัวเลือกเหล่านั้น ..
Roh

2
"และตัวเลือกทั้งสองนั้นคืออะไร?" หมายความว่าอย่างไร มันเป็นคำถามหรือไม่?
John U

2

สองหัวข้อที่คุณร่างสามารถอธิบายได้ค่อนข้างง่าย:

  • 1: คุณไม่สามารถสร้างตัวเลขสุ่มได้เร็วกว่าทุกๆ 40 รอบนาฬิกาดังนั้นผลลัพธ์นี้ใน 48MHz / 40 = ~ 1M ตัวอย่าง / วินาที
  • 2: ฮาร์ดแวร์ประกอบด้วยจอภาพซึ่งจะตรวจสอบทุกหมายเลขที่สร้างขึ้นสำหรับพฤติกรรมที่ผิดปกติ เช่นถ้าคุณใช้อุณหภูมิเป็นแหล่งกำเนิดและมีสภาพแวดล้อมที่มีอุณหภูมิที่มีความเสถียรสูงมันอาจเกิดขึ้นได้ว่า RNG จะสร้างลำดับหมายเลขเดิมอีกครั้งอีกครั้ง (เช่นตัวสร้างตัวเลขสุ่มหลอกจะทำถ้าคุณเริ่มต้นด้วยค่าเมล็ดเดียวกัน) . ส่วนประกอบจะตรวจสอบสิ่งนี้และให้สัญญาณถ้า RNG ทำงานตามที่คาดไว้ ในกรณีที่คุณต้องการให้ตัวเลขของคุณเป็น "จริง ๆ " สุ่มคุณอาจต้องการตรวจสอบสถานะนี้เพื่อดูว่าพวกเขาเป็นจริง วิธีการนี้ถูกต้องแม่นยำเพียงใดและวิธีการทำงานของ RNG จริงอาจมีให้ในข้อความที่เหลือ

1

สมมติว่ามีการออกแบบเครื่องปั่นล้อรูเล็ตแบบกลไกซึ่งให้พลังงานมอเตอร์ในช่วงระยะเวลาหนึ่งรอล้อและลูกบอลให้หยุดพักและสังเกตว่าลูกบอลอยู่ในกระเป๋าใดโดยปกติหลังจากหมุนลูกบอลและล้อแต่ละอันแล้ว ท้ายสถานที่ที่แตกต่างกันเล็กน้อยและรูปแบบขนาดเล็กในตำแหน่งของลูกหลังจากหนึ่งหมุนสามารถสร้างความแตกต่างอย่างมากในที่ที่มันจะจบลงในการหมุนต่อไป ดังนั้นแม้ว่ามอเตอร์จะให้พลังงานตลอดเวลา แต่กระเป๋าที่ลูกบอลตกลงบนหนึ่งสปินจะไม่ขึ้นอยู่กับตำแหน่งที่มันหมุนไปก่อน

อย่างไรก็ตามตอนนี้สมมติว่าตัวเลขสองสามตัวนั้นมีหรือมีอาการซึมเศร้าเล็กน้อยและตลับลูกปืนของมอเตอร์จะพัฒนาเป็นจุดแบนราบ จากนั้นสปินบางตัวจะถูกสุ่ม แต่หลังจากสปินซึ่งส่งผลให้ลูกบอลลอยขึ้นมาในที่ลุ่มและลูกปืนที่จุดแบนการหมุนครั้งต่อไปอาจจะเอนเอียงไปทางที่มีผลเช่นเดียวกับการหมุนครั้งสุดท้ายที่เกิดขึ้น หากสปินส่วนใหญ่ไม่ได้ตี Divot และ Flat Spot พร้อมกันการดำรงอยู่ของมันอาจจะไม่ส่งผลกระทบต่อสิ่งต่าง ๆ มากเกินไป ในทางกลับกันถ้ามีการวางคอมโบ Divot / Flat หนึ่งอันที่ถูกต้องเพื่อให้ลูกบอลมีการลงจอดอย่างต่อเนื่องอย่างสมเหตุสมผลพอสมควรและจะเกิดการวางลูกเพื่อส่งบอลกลับไปที่แรก จบลงด้วยพฤติกรรมที่เบ้อย่างมาก

หากหลังจากลงจอดที่ 4 และ 23 การหมุนครั้งต่อไปคือ 4 นั่นไม่จำเป็นต้องระบุปัญหา 4 ควรปรากฏประมาณ 1/38 ของเวลาในสถานการณ์นั้น นอกจากนี้การได้มาของข้อมูลแบบสุ่มควรจับหมายเลขพ็อคเก็ตเนื่องจากไม่มีประโยชน์ใดที่ทราบว่าลูกบอลควรมาพักในส่วนต่าง ๆ ของกระเป๋าบ่อยแค่ไหน อย่างไรก็ตามมันอาจเป็นประโยชน์สำหรับทุกสิ่งที่บันทึกตัวเลขเพื่อ "สังเกต" ซึ่งในกระเป๋าลูกบอลหยุดและดูรูปแบบที่ผิดปกติใด ๆ การกระจายตำแหน่งอาจบิดเบือนไปทางด้านหน้าหรือด้านหลังโดยไม่แสดงปัญหา แต่ถ้ามีการกระจายที่แคบซึ่งอาจทำให้เกิดความกังวล

หากการอ่านอย่างต่อเนื่องจากเครื่องกำเนิดไฟฟ้าแบบสุ่มมีความเป็นอิสระทางสถิติการชดเชยความลำเอียงนั้นไม่ใช่เรื่องยาก (แม้ว่าเวลาที่ต้องการคือ nondeterministic) อย่างไรก็ตามหากเครื่องกำเนิดไฟฟ้าตกอยู่ในสภาวะที่การอ่านไม่เป็นอิสระ (เช่นสถานะวงล้อของวงล้อด้านบน) การชดเชยจะกลายเป็นไปไม่ได้โดยทั่วไปดังนั้นจึงไม่จำเป็นต้องใช้ฮาร์ดแวร์ RNG ในการตรวจสอบพฤติกรรมดังกล่าว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.