อ่าน 3 นาที
แรนดู
RANDU [ 1 ] เป็นวิธีการที่ล้าสมัยสำหรับ การสร้างตัวเลขสุ่ม ซึ่งใช้เป็นหลักในช่วงทศวรรษ 1960 และ 1970 [ 2 ] เป็น ตัวสร้างตัวเลขสุ่มเชิงเส้น (LCG) ประเภท Park–Miller [ 2 ]...
แรนดู

RANDU [ 1 ]เป็นวิธีการที่ล้าสมัยสำหรับการสร้างตัวเลขสุ่มซึ่งใช้เป็นหลักในช่วงทศวรรษ 1960 และ 1970 [ 2 ]เป็นตัวสร้างตัวเลขสุ่มเชิงเส้น (LCG) ประเภท Park–Miller [ 2 ]ที่กำหนดโดยความสัมพันธ์เวียนเกิด
โดยใช้หมายเลขเมล็ดพันธุ์เริ่มต้นเป็นเลขคี่มันจะสร้างจำนวนเต็ม สุ่มเทียม ซึ่งกระจายอย่างสม่ำเสมอในช่วง[0, 2³¹ − 1]แต่ในการใช้งานจริงมักจะถูกแปลงเป็นจำนวนตรรกยะ สุ่มเทียม ในช่วง(0, 1)โดยใช้สูตร
RANDU ของ IBM ถือกันอย่างกว้างขวางว่าเป็นหนึ่งในเครื่องกำเนิดเลขสุ่มที่คิดมาไม่ดีที่สุดเท่าที่เคยออกแบบมา[ 3 ] และ Donald Knuthได้อธิบายว่ามัน "แย่มากจริงๆ" [ 4 ]มันล้มเหลวในการทดสอบสเปกตรัมสำหรับมิติที่มากกว่า 2 อย่างมาก ดังที่แสดงด้านล่าง
เหตุผลที่เลือกค่าตัวคูณและค่าสัมบูรณ์เหล่านี้ก็คือ ด้วยขนาดคำจำนวนเต็ม 32 บิต การคำนวณทางคณิตศาสตร์ของ mod 2 31 สามารถทำได้อย่างรวดเร็วโดยใช้ตัวดำเนินการบิตในฮาร์ดแวร์ แต่ค่าเหล่านี้ถูกเลือกเพื่อความสะดวกในการคำนวณ ไม่ใช่เพื่อคุณภาพทางสถิติ
ปัญหาเกี่ยวกับตัวคูณและค่าสัมบูรณ์
สำหรับตัวสร้างเชิงเส้นแบบคอนกรุเอ ทีฟใดๆ ที่มีโมดูลัสmที่ใช้ในการสร้างจุดใน ปริภูมิ n มิติ จุดเหล่านั้นจะตกอยู่ใน ระนาบขนานไม่เกิน[ 5 ] ซึ่งแสดงให้เห็นว่า LCG ที่มีโมดูลัสต่ำไม่เหมาะกับ การจำลองมอนเตคาร์โลในมิติสูงสำหรับm = 2 31และn = 3 LCG อาจมีระนาบได้มากถึง 2344 ระนาบ ซึ่งเป็นค่าสูงสุดทางทฤษฎี ขอบเขตบนที่แน่นกว่ามากได้รับการพิสูจน์ในเอกสาร Marsaglia ฉบับเดียวกันว่าเป็นผลรวมของค่าสัมบูรณ์ของสัมประสิทธิ์ทั้งหมดของระนาบในรูปแบบมาตรฐาน นั่นคือ ถ้าระนาบอยู่ในรูปแบบAx 1 + Bx 2 + Cx 3 = จำนวนเต็มบางค่า เช่น 0, 1, 2 เป็นต้น จำนวนระนาบสูงสุดคือ | A | + | B | + | C | [ 5 ]
ต่อไปนี้เราจะตรวจสอบค่าตัวคูณ 65539 และค่าสัมบูรณ์ 2 31ที่เลือกสำหรับ RANDU พิจารณาการคำนวณต่อไปนี้ โดยที่ทุกพจน์ควรถูกหารด้วย 2 31เริ่มต้นด้วยการเขียนความสัมพันธ์เวียนเกิดดังนี้
ซึ่งหลังจากขยายตัวประกอบกำลังสองแล้วจะได้
(เนื่องจาก2 32 mod 2 31 = 0 ) และช่วยให้เราแสดงความสัมพันธ์ระหว่างสามจุดได้ดังนี้
เมื่อรวมค่าสัมบูรณ์ของสัมประสิทธิ์ เราจะได้ระนาบไม่เกิน 16 ระนาบใน 3 มิติ และเมื่อพิจารณาอย่างละเอียดจะเหลือเพียง 15 ระนาบ ดังแสดงในแผนภาพด้านบน แม้แต่ตามมาตรฐานของ LCGs ก็ตาม นี่แสดงให้เห็นว่า RANDU นั้นแย่มาก: การใช้ RANDU สำหรับการสุ่มตัวอย่างลูกบาศก์หน่วยจะสุ่มได้เพียง 15 ระนาบขนาน ซึ่งยังห่างไกลจากขีดจำกัดสูงสุดของระนาบมาก
เนื่องจากการใช้ RANDU อย่างแพร่หลายในช่วงต้นทศวรรษ 1970 ผลลัพธ์จำนวนมากจากช่วงเวลานั้นจึงถูกมองว่าน่าสงสัย[ 6 ]พฤติกรรมที่ไม่เหมาะสมนี้ถูกตรวจพบแล้วตั้งแต่ปี 1963 [ 7 ]บนคอมพิวเตอร์ 36 บิต และถูกนำไปใช้งานใหม่อย่างระมัดระวังบนIBM System/360 32 บิต เชื่อกันว่าถูกกำจัดไปอย่างกว้างขวางในช่วงต้นทศวรรษ 1990 [ 8 ]แต่ก็ยังมีคอมไพเลอร์ FORTRAN ที่ใช้ RANDU อยู่จนถึงปี 1999 [ 1 ]
ตัวอย่างผลลัพธ์
จุดเริ่มต้นของช่วงเวลาการส่งออกข้อมูลของ RANDU สำหรับข้อมูลเริ่มต้นคือ
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ แรนดู
RANDU [ 1 ] เป็นวิธีการที่ล้าสมัยสำหรับ การสร้างตัวเลขสุ่ม ซึ่งใช้เป็นหลักในช่วงทศวรรษ 1960 และ 1970 [ 2 ] เป็น ตัวสร้างตัวเลขสุ่มเชิงเส้น (LCG) ประเภท Park–Miller [ 2 ]...
ปัญหาเกี่ยวกับตัวคูณและค่าสัมบูรณ์
สำหรับ ตัวสร้างเชิงเส้นแบบคอนกรุเอ ทีฟใดๆ ที่มีโมดูลัส m ที่ใช้ในการสร้างจุดใน ปริภูมิ n มิติ จุดเหล่านั้นจะตกอยู่ใน ระนาบขนานไม่เกิน [ 5 ] ซึ่งแสดงให้เห็นว่า LCG ที่มีโมดูลัสต่ำไม่เหมาะกับ การจำลองมอนเตคาร์โล ในมิติสูงสำหรับ m = 2 31 และ n = 3 LCG...
ตัวอย่างผลลัพธ์
จุดเริ่มต้นของช่วงเวลาการส่งออกข้อมูลของ RANDU สำหรับข้อมูลเริ่มต้นคือ วี 0 = 1 {\displaystyle V_{0}=1}
ลิงก์ภายนอก
คำคมที่เกี่ยวข้องกับRANDUใน Wikiquote ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=RANDU&oldid=1334279494 "