กลับไปหน้าบทความ

อ่าน 3 นาที

แรนดู

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

แรนดู

แผนภาพสามมิติแสดงค่า 100,000 ค่าที่สร้างขึ้นด้วยฟังก์ชัน RANDU แต่ละจุดแทนค่าสุ่มเทียม 3 ค่าที่ต่อเนื่องกัน จะเห็นได้อย่างชัดเจนว่าจุดต่างๆ ตกอยู่บนระนาบสองมิติ 15 ระนาบ

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 สำหรับข้อมูลเริ่มต้นคือ

1, 65539, 393225, 1769499, 7077969, 26542323, … (ลำดับA096555ในOEIS )
  • คำคมที่เกี่ยวข้องกับRANDUใน Wikiquote
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=RANDU&oldid=1334279494 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ แรนดู

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 "