ฉันจะสร้างตัวเลขสุ่มด้วยตนเองจากการแจกแจงที่กำหนดได้อย่างไรเช่น 10 การรับรู้จากการแจกแจงแบบปกติมาตรฐาน
ฉันจะสร้างตัวเลขสุ่มด้วยตนเองจากการแจกแจงที่กำหนดได้อย่างไรเช่น 10 การรับรู้จากการแจกแจงแบบปกติมาตรฐาน
คำตอบ:
หาก "ด้วยตนเอง" รวมถึง "เชิงกล" แสดงว่าคุณมีตัวเลือกมากมายสำหรับคุณ ในการจำลองตัวแปร Bernoulli โดยมีความน่าจะเป็นครึ่งหนึ่งเราสามารถโยนเหรียญ: สำหรับก้อย1สำหรับหัว ในการจำลองการแจกแจงเชิงเรขาคณิตเราสามารถนับจำนวนเหรียญที่ต้องโยนก่อนที่เราจะได้หัว เพื่อจำลองการกระจายตัวแบบทวินามเราสามารถโยนเหรียญของเราnครั้ง (หรือเพียงแค่โยนเหรียญn ) และนับจำนวนหัว "quincunx" หรือ "เครื่องถั่ว" หรือ "กล่อง Galton" ? ดูเหมือนว่าไม่มีสิ่งเช่น "เหรียญถ่วงน้ำหนัก"แต่ถ้าเราต้องการเปลี่ยนแปลงพารามิเตอร์ความน่าจะเป็นของตัวแปร Bernoulli หรือ binomial ของเราเป็นค่าอื่นที่ไม่ใช่เข็มของGeorges-Louis Leclerc, Comte de Buffonจะช่วยให้เราทำเช่นนั้นได้ ในการจำลองการกระจายตัวแบบไม่ต่อเนื่องใน{ 1 , 2 , 3 , 4 , 5 , 6 }เราจะทำการหมุนแม่พิมพ์แบบหกด้าน แฟน ๆ ของเกมสวมบทบาทจะได้พบกับลูกเต๋าที่แปลกใหม่มากขึ้นเช่นลูกเต๋าเตตราดาร์ดเพื่อสุ่มตัวอย่างจาก{ 1 , 2 , 3 , 4 }ในขณะที่วงล้อสปินเนอร์หรือรูเล็ตสามารถไปต่อได้ ( เครดิตรูปภาพ )
เราจะต้องคลั่งไคล้ที่จะสร้างตัวเลขสุ่มในลักษณะนี้ในวันนี้เมื่อมันเป็นเพียงคำสั่งเดียวบนคอนโซลคอมพิวเตอร์ - หรือถ้าเรามีตารางตัวเลขสุ่มที่เหมาะสมใช้ได้หนึ่งไปยังมุม dustier ของชั้นหนังสือ? บางทีอาจจะมีบางสิ่งที่น่าสัมผัสเกี่ยวกับการทดลองทางกายภาพ แต่สำหรับคนที่ทำงานก่อน Computer Age จริง ๆ แล้วก่อนที่จะมีตารางจำนวนสุ่มขนาดใหญ่ (ซึ่งมีมากขึ้นในภายหลัง) การจำลองตัวแปรสุ่มด้วยตนเองมีความสำคัญในทางปฏิบัติมากขึ้น เมื่อ Buffon ตรวจสอบความขัดแย้งของSt. Petersburg- เกมโยนเหรียญที่มีชื่อเสียงซึ่งจำนวนผู้เล่นชนะเป็นสองเท่าทุกครั้งที่มีการโยนหัวผู้เล่นแพ้หางแรกและคาดว่าการจ่ายเงินจะกลับมาอย่างไม่มีที่สิ้นสุด - เขาต้องการจำลองการกระจายทางเรขาคณิตด้วย 0.5ในการทำเช่นนั้นดูเหมือนว่าเขาจ้างเด็กคนหนึ่งโยนเหรียญเพื่อจำลองเกมเซนต์ปีเตอร์สเบิร์ก 2048 บทละครโดยบันทึกจำนวนการโยนก่อนที่เกมจะจบลง การกระจายทางเรขาคณิตจำลองนี้ทำซ้ำในStigler (1991) :
Tosses Frequency
1 1061
2 494
3 232
4 137
5 56
6 29
7 25
8 8
9 6
ในเรียงความเดียวกันกับที่เขาตีพิมพ์การสอบสวนเชิงประจักษ์ในความขัดแย้งของเซนต์ปีเตอร์สเบิร์ก Buffon ได้แนะนำ " เข็มควายของเข็ม " ที่โด่งดัง ถ้าเครื่องบินจะถูกแบ่งออกเป็นเส้นโดยเส้นคู่ขนานระยะทางต่างหากและเข็มยาวL ≤ dจะลดลงบนมันน่าจะเป็นเข็มข้ามหนึ่งในสายเป็น2 ลิตร d
ดังนั้นเข็มของ Buffon จึงสามารถใช้เพื่อจำลองตัวแปรสุ่มหรือX∼Binomial(n,2lและเราสามารถปรับความน่าจะเป็นของความสำเร็จโดยการเปลี่ยนความยาวของเข็มของเราหรือ (อาจจะสะดวกกว่า) ระยะทางที่เราใช้ควบคุมเส้น การใช้งานที่ทางเลือกของเข็ม Buffon คือเป็นวิธีที่ไม่มีประสิทธิภาพน่าขนพองสยองเกล้าที่จะหาการประมาณความน่าจะเป็นสำหรับπ ภาพ (เครดิต) แสดงไม้ขีดไฟ 17 อันโดยมี 11 เส้น เมื่อระยะห่างระหว่างเส้นปกครองถูกตั้งค่าเท่ากับความยาวของแท่งไม้ขีดไฟเช่นที่นี่สัดส่วนที่คาดหวังของไม้ขีดไฟข้ามคือ2และด้วยเหตุนี้เราสามารถประมาณ πเป็นครั้งที่สองซึ่งกันและกันของส่วนสังเกต: ที่นี่เราได้รับ π =2⋅173.1 ในปี 1901 มาริโอ Lazzarini อ้างว่าได้ดำเนินการทดลองโดยใช้ 2.5 ซม. เข็มที่มีเส้น 3 ซม. ออกจากกันและหลังจากที่ได้รับ 3408 กลมๆ π =355 . นี่คือเหตุผลที่รู้จักกันดีถึงπ, แม่นยำถึงทศนิยมหกตำแหน่ง Badger (1994) แสดงหลักฐานที่น่าเชื่อถือว่านี่เป็นการฉ้อโกงไม่น้อยกว่า 95% ของความแม่นยำทศนิยมหกตำแหน่งโดยใช้เครื่องมือของ Lazzarini ต้องใช้ความอดทน 134 ล้านล้านเข็ม! แน่นอนเข็ม Buffon เป็นประโยชน์มากขึ้นเป็นเครื่องกำเนิดไฟฟ้าจำนวนสุ่มกว่าก็คือเป็นวิธีการสำหรับการประเมินπ
เครื่องกำเนิดไฟฟ้าของเราจนถึงตอนนี้ได้แยกกันอย่างน่าผิดหวัง ถ้าเราต้องการจำลองการแจกแจงแบบปกติ? ทางเลือกหนึ่งคือการได้รับตัวเลขสุ่มและใช้พวกเขาในการประมาณค่าแบบไม่ต่อเนื่องที่ดีกับการแจกแจงแบบสม่ำเสมอในจากนั้นทำการคำนวณบางอย่างเพื่อแปลงให้เป็นค่าเบี่ยงเบนปกติแบบสุ่ม ล้อสปินเนอร์หรือรูเล็ตสามารถให้ตัวเลขทศนิยมจากศูนย์ถึงเก้า ลูกเต๋าสามารถสร้างเลขฐานสอง ถ้าทักษะทางคณิตศาสตร์ของเราสามารถรับมือกับฐานที่น่ากลัวได้แม้แต่ชุดลูกเต๋ามาตรฐานก็ยังทำได้ คำตอบอื่น ๆ ได้กล่าวถึงวิธีการแปลงรูปแบบนี้อย่างละเอียด ฉันขอเลื่อนการอภิปรายเพิ่มเติมใด ๆ จนกว่าจะสิ้นสุด
ในปลายศตวรรษที่สิบเก้ายูทิลิตี้ของการแจกแจงแบบปกตินั้นเป็นที่รู้จักกันดีและมีนักสถิติกระตือรือร้นที่จะจำลองการเบี่ยงเบนแบบปกติ ไม่จำเป็นต้องพูดการคำนวณด้วยมือที่มีความยาวจะไม่เหมาะสมยกเว้นการตั้งค่ากระบวนการจำลองในตอนแรก เมื่อสร้างขึ้นแล้วการสร้างตัวเลขสุ่มจะต้องค่อนข้างง่ายและรวดเร็ว Stigler (1991) แสดงวิธีการที่นักสถิติสามคนใช้ในยุคนี้ ทุกคนกำลังทำการวิจัยเทคนิคการปรับให้เรียบ: ส่วนเบี่ยงเบนปกติแบบสุ่มนั้นเป็นที่สนใจอย่างเห็นได้ชัดเช่นเพื่อจำลองข้อผิดพลาดการวัดที่จำเป็นต้องทำให้ราบเรียบ
นักสถิติชาวอเมริกันที่น่าทึ่งErastus Lyman De Forestสนใจที่จะทำให้ตารางชีวิตราบรื่นและพบปัญหาที่ต้องจำลองค่าสัมบูรณ์ของส่วนเบี่ยงเบนปกติ ในสิ่งที่จะพิสูจน์ได้ว่าเป็นรูปแบบการทำงาน De Forest ถูกจริงๆสุ่มตัวอย่างจากการกระจายครึ่งปกติ ยิ่งกว่านั้นแทนที่จะใช้ค่าเบี่ยงเบนมาตรฐานของหนึ่ง ( เราถูกเรียกว่า "มาตรฐาน") De Forest ต้องการ "ข้อผิดพลาดที่น่าจะเป็น" (ค่าเบี่ยงเบนเฉลี่ย) ของหนึ่ง นี่คือรูปแบบที่กำหนดในตารางของ "ความน่าจะเป็นของข้อผิดพลาด"ในภาคผนวกของ "คู่มือดาราศาสตร์และเชิงปฏิบัติทรงกลมเล่ม 2" โดยวิลเลียม Chauvenet จากตารางนี้ De Forest แก้ไขปริมาณของการแจกแจงครึ่งปกติจากถึงp = 0.995ซึ่งเขาถือว่าเป็น "ข้อผิดพลาดของความถี่เท่ากัน"
หากคุณต้องการจำลองการแจกแจงแบบปกติตาม De Forest คุณสามารถพิมพ์ตารางนี้และตัดมันได้ เดอฟอเรสต์ (2419) เขียนว่าข้อผิดพลาด "ได้รับการจารึกไว้บนแผ่นกระดานขนาดเท่ากัน 100 บิตซึ่งถูกเขย่าในกล่องและดึงออกมาทีละตัว"
นักดาราศาสตร์และนักอุตุนิยมวิทยาเซอร์จอร์จโฮเวิร์ดดาร์วิน (บุตรชายของนักธรรมชาตินิยมชาร์ลส์) ต่างปั่นป่วนพัฒนาสิ่งต่าง ๆ โดยการพัฒนาสิ่งที่เขาเรียกว่า "รูเล็ต" เพื่อสร้างความเบี่ยงเบนปกติแบบสุ่ม ดาร์วิน (1877)อธิบายวิธี:
"ดัชนี" ควรอ่านได้ที่นี่ในฐานะ "ตัวชี้" หรือ "ตัวบ่งชี้" (cf "นิ้วชี้") สติกเลอร์ชี้ให้เห็นว่าดาร์วินเช่นเดอฟอเรสต์ใช้การแจกแจงสะสมแบบครึ่งปกติรอบดิสก์ จากนั้นใช้เหรียญเพื่อแนบเครื่องหมายที่สุ่มทำให้การแจกแจงแบบปกติเต็มรูปแบบ Stigler ตั้งข้อสังเกตว่ามันไม่ชัดเจนว่าขนาดนั้นจบการศึกษาอย่างไร แต่ทึกทักเอาว่าคำสั่งให้จับดิสก์กลาง - หมุนด้วยตนเองคือ "เพื่อลดอคติที่อาจเกิดขึ้นต่อส่วนหนึ่งของดิสก์และเพื่อเร่งกระบวนการ"
เซอร์ฟรานซิสกัลตันบังเอิญครึ่งลูกพี่ลูกน้องกับชาร์ลส์ดาร์วินได้ถูกกล่าวถึงในควินน์ ในขณะที่กลไกนี้จำลองการแจกแจงทวินามว่าโดยทฤษฎีบท De Moivre-Laplace นั้นมีความคล้ายคลึงกับการแจกแจงแบบปกติ (และบางครั้งใช้เป็นเครื่องช่วยสอนสำหรับหัวข้อนั้น) Galton ได้สร้างแผนการที่ซับซ้อนมากขึ้นเมื่อเขาต้องการ ตัวอย่างจากการแจกแจงแบบปกติ ยิ่งไปกว่าความแปลกใหม่ของตัวอย่างที่ไม่เป็นทางการที่ด้านบนของคำตอบนี้ Galton พัฒนาลูกเต๋ากระจายตามปกติ- หรือมากกว่าอย่างแม่นยำคือชุดลูกเต๋าที่สร้างการกระจายแบบไม่ต่อเนื่องที่ยอดเยี่ยมสำหรับการแจกแจงแบบปกติโดยมีค่าเบี่ยงเบนมัธยฐานหนึ่ง ลูกเต๋าเหล่านี้สร้างขึ้นในปี 1890 ถูกเก็บรักษาไว้ในคอลเล็กชัน Galton ที่ University College London
ในบทความ 1890 ในNature Galton เขียนว่า:
ในฐานะเครื่องมือสำหรับการสุ่มเลือกฉันไม่พบสิ่งใดที่เหนือกว่าลูกเต๋า มันน่าเบื่อที่สุดที่จะสับไพ่อย่างละเอียดระหว่างการจับฉลากแต่ละครั้งและวิธีการผสมและกวนลูกบอลที่ทำเครื่องหมายไว้ในถุงนั้นน่าเบื่อกว่า teetotumหรือรูปแบบของรูเล็ตบางส่วนเป็นที่นิยมเหล่านี้ แต่ลูกเต๋าจะดีกว่าทั้งหมด เมื่อพวกเขาถูกเขย่าและถูกโยนลงในตะกร้าพวกเขาก็จะปะทะกับคนอื่นและต่อกับกระดูกซี่โครงของงานตะกร้าที่พวกเขาเกลือกกลิ้งอย่างดุเดือดและตำแหน่งของพวกเขาในตอนแรกก็ไม่ได้เบาะแสอะไรเลยแม้แต่น้อย เขย่าและโยนครั้งเดียว โอกาสที่คนตายตายมีความหลากหลายมากกว่าที่คิด มีความเป็นไปได้ที่เท่าเทียมกัน 24 ประการและไม่ใช่แค่ 6 เพราะแต่ละหน้ามีสี่ขอบที่อาจนำไปใช้ได้
นิ้วและวางด้วยกระดาษสีขาวบาง ๆ สำหรับการทำเครื่องหมายที่จะเขียนบน Galton แนะนำให้เตรียมลูกเต๋าชนิดที่สามสามอัน II และ II หนึ่งในสาม
Raazesh Sainudiin ของห้องปฏิบัติการสำหรับการทดสอบทางสถิติคณิตศาสตร์รวมถึงโครงการนักศึกษาจาก University of Canterbury, NZ, ทำซ้ำลูกเต๋า Galton ของ โครงการรวมถึงการตรวจสอบเชิงประจักษ์จากการทอยลูกเต๋าหลายครั้ง (รวมถึง CDF เชิงประจักษ์ที่ดูมั่นใจ "ปกติ") และการปรับคะแนนลูกเต๋าเพื่อให้พวกเขาปฏิบัติตามการแจกแจงแบบปกติมาตรฐาน ใช้คะแนนดั้งเดิมของ Galton นอกจากนี้ยังมีกราฟของการแจกแจงแบบปกติ discretized ที่คะแนนลูกเต๋าตาม
หากคุณพร้อมที่จะขยาย "กลไก" ไปยังเครื่องใช้ไฟฟ้าโปรดสังเกตว่ามหากาพย์ล้านล้าน A RAND แบบสุ่มพร้อม 100,000 Deviates ปกติขึ้นอยู่กับการจำลองทางอิเล็กทรอนิกส์ของวงล้อรูเล็ต จากรายงานทางเทคนิค (โดย George W. Brown เดิมทีมิถุนายน 1949) เราพบ:
ด้วยเหตุนี้ผู้คน RAND จึงได้รับความช่วยเหลือจากบุคลากรด้านวิศวกรรมของ บริษัท Douglas Aircraft ได้ออกแบบล้อรูเล็ตอิเล็คทรอนิคส์ตามรูปแบบของข้อเสนอที่เซซิลเฮสติ้งส์เสนอ สำหรับวัตถุประสงค์ของการพูดคุยนี้คำอธิบายสั้น ๆ จะเพียงพอ แหล่งกำเนิดความถี่คลื่นความถี่แบบสุ่มนั้นถูกรวบรวมด้วยพัลส์ความถี่คงที่ประมาณหนึ่งครั้งต่อวินาทีโดยเฉลี่ยประมาณ 100,000 ครั้งต่อวินาที วงจรกำหนดมาตรฐานพัลส์ส่งพัลส์ไปยังตัวนับเลขฐานสองห้าตำแหน่งดังนั้นโดยหลักการแล้วเครื่องจะเหมือนกับวงล้อรูเล็ตที่มี 32 ตำแหน่งทำให้โดยเฉลี่ยประมาณ 3,000 รอบการหมุนแต่ละรอบ การแปลงแบบไบนารี่เป็นทศนิยมถูกใช้ไปโดยทิ้งตำแหน่ง 12 จาก 32 ตำแหน่งและตัวเลขสุ่มที่ได้จะถูกป้อนเข้าสู่การชกของไอบีเอ็มเพื่อให้ได้ตารางการชกของการ์ดแบบสุ่ม
อย่างไรก็ตามก่อนที่คุณจะถูกล่อลวงให้ประกอบล้อรูเล็ตอิเล็คโทรนิคคุณควรอ่านส่วนที่เหลือของรายงาน! มันปรากฏว่าโครงการ "พึ่งพาอย่างหนักกับสมมติฐานของมาตรฐานชีพจรในอุดมคติที่จะเอาชนะการตั้งค่าตามธรรมชาติในตำแหน่งเคาน์เตอร์; ประสบการณ์ในภายหลังแสดงให้เห็นว่าข้อสันนิษฐานนี้เป็นจุดอ่อน จุดนี้ " การวิเคราะห์ทางสถิติโดยละเอียดพบปัญหาบางประการกับผลลัพธ์การทดสอบความถี่ของเลขคี่และเลขคู่พบว่าบางรุ่นมีความไม่สมดุลเล็กน้อย นี่เป็นเรื่องเลวร้ายในบางกลุ่มมากกว่าคนอื่น ๆ แนะนำว่า "เครื่องทำงานในเดือนที่แล้วนับตั้งแต่ปรับขึ้น ... สิ่งบ่งชี้ที่เครื่องนี้ต้องการการบำรุงรักษาที่มากเกินไปเพื่อให้มันอยู่ในรูปทรงสุดยอด" อย่างไรก็ตามพบวิธีการทางสถิติในการแก้ไขปัญหาเหล่านี้:
ณ จุดนี้เรามีตัวเลขล้านหลักดั้งเดิม, การ์ด IBM 20,000 ใบ, มี 50 หลักในการ์ด, โดยมีอคติแปลก ๆ แม้เล็กน้อยที่สังเกตได้จากการวิเคราะห์ทางสถิติ ตอนนี้ได้ตัดสินใจที่จะสุ่มตารางใหม่หรืออย่างน้อยก็เปลี่ยนมันโดยการเล่นรูเล็ตเล็ก ๆ เพื่อลบอคติคี่ - คู่ เราได้เพิ่ม (mod 10) หลักในแต่ละบัตรหลักโดยหลักไปยังตัวเลขที่สอดคล้องกันของบัตรก่อนหน้านี้ ตารางที่ได้รับหนึ่งล้านหลักนั้นจะต้องผ่านการทดสอบมาตรฐานต่างๆการทดสอบความถี่การทดสอบแบบอนุกรมการทดสอบโป๊กเกอร์เป็นต้นตัวเลขล้านเหล่านี้มีค่าใช้จ่ายด้านสุขภาพที่สะอาดและได้รับการรับรองเป็นตารางสุ่มตัวเลขแบบสุ่มของ RAND
แน่นอนว่ามีเหตุผลที่ดีที่จะเชื่อว่ากระบวนการเพิ่มจะทำให้ดีขึ้น โดยทั่วไปแล้วกลไกพื้นฐานคือวิธีการ จำกัด ของผลรวมของตัวแปรสุ่มแบบโมดูโลช่วงเวลาของหน่วยในการแจกแจงแบบสี่เหลี่ยมผืนผ้าในลักษณะเดียวกับที่ผลรวมของตัวแปรสุ่มแบบไม่ จำกัด จะเข้าสู่ภาวะปกติ วิธีนี้ถูกใช้โดยฮอร์ตันและสมิ ธ จากคณะกรรมาธิการการพาณิชย์ระหว่างรัฐเพื่อให้ได้ตัวเลขสุ่มจำนวนมากจากกลุ่มที่มีจำนวนสุ่มมากขึ้น
แน่นอนว่าสิ่งนี้เกี่ยวข้องกับการสร้างตัวเลขทศนิยมแบบสุ่มแต่ง่ายต่อการใช้สิ่งเหล่านี้ในการสร้างค่าเบี่ยงเบนแบบสุ่มที่สุ่มมาอย่างสม่ำเสมอถูกปัดเศษเป็นทศนิยมหลายตำแหน่งที่คุณเห็นว่าเหมาะสมที่จะใช้เป็นหลัก มีวิธีการที่น่ารักต่างๆเพื่อสร้างความเบี่ยงเบนของการกระจายอื่น ๆ จากการเบี่ยงเบนเครื่องแบบของคุณอาจจะเป็นความสุนทรีย์มากที่สุดที่ชื่นชอบซึ่งเป็นอัลกอริทึมรัตมาสำหรับการแจกแจงความน่าจะเป็นที่เดียวทั้งลดลงหรือสมมาตร unimodal แต่แนวคิดที่ง่ายที่สุดและมากที่สุดในบังคับกันอย่างแพร่หลายเป็นสิ่งที่ตรงกันข้าม การแปลง CDF : กำหนดค่าเบี่ยงเบน จากการกระจายเครื่องแบบบน และถ้าการกระจายที่คุณต้องการมี CDF จากนั้น จะเป็นการเบี่ยงเบนแบบสุ่มจากการกระจายของคุณ หากคุณมีความสนใจเป็นพิเศษในการเบี่ยงเบนปกติแบบสุ่มการคำนวณการแปลงBox-Mullerมีประสิทธิภาพมากกว่าการสุ่มตัวอย่างการแปลงผกผันวิธี Marsaglia ขั้วโลกมีประสิทธิภาพมากกว่าอีกครั้งและ ziggurat ( เครดิตรูปภาพสำหรับภาพเคลื่อนไหวด้านล่าง ) ยิ่งดีกว่า ปัญหาในทางปฏิบัติบางอย่างจะกล่าวถึงในหัวข้อ StackOverflow นี้หากคุณตั้งใจจะใช้วิธีการเหล่านี้อย่างน้อยหนึ่งวิธีในรหัส
อ้างอิง
แบดเจอร์, L. (1994) " โชคดีของ Lazzarini ประมาณπ " นิตยสารคณิตศาสตร์ สมาคมคณิตศาสตร์แห่งอเมริกา 67 (2): 83–91
บราวน์, GW " ประวัติความเป็นมาของตัวเลขสุ่ม - สรุป " ของ RAND ใน AS Householder, GE Forsythe และ HH Germond, eds., "Monte Carlo Method", สำนักมาตรฐานคณิตศาสตร์ประยุกต์แห่งชาติ , 12 (วอชิงตันดีซี: สำนักงานการพิมพ์ของรัฐบาลสหรัฐฯ, 1951): 31-32
ดาร์วิน, GH (1877) " ในการวัดปริมาณที่ผันแปรได้ของปริมาณและการรักษาการสังเกตการณ์ทางอุตุนิยมวิทยา " Philosophical Magazine , 4 (22), 1-14
De Forest, EL (1876) การแก้ไขและการปรับตัวของซีรีส์ Tuttle, Morehouse และ Taylor, New Haven, Conn
Galton, F. (1890) "ลูกเต๋าสำหรับการทดลองทางสถิติ" ธรรมชาติ , 42 , 13-14
สติกเลอร์, SM (1991) "การจำลองสุ่มในศตวรรษที่สิบเก้า" วิทยาศาสตร์สถิติ , 6 (1), 89-97
ในวารสารเดียวกันนี้คือเทคนิคต่าง ๆ ที่ใช้กระดาษที่มีการอ้างถึงอย่างสูงของ von Neumann ซึ่งใช้ในการเชื่อมต่อกับ Random Digitsซึ่งเขาพิจารณาถึงความยากลำบากในการสร้างตัวเลขสุ่มเพื่อใช้ในคอมพิวเตอร์ เขาปฏิเสธความคิดของอุปกรณ์ทางกายภาพที่แนบมากับเครื่องคอมพิวเตอร์ที่สร้างการป้อนข้อมูลแบบสุ่มในการบินที่และคิดว่าไม่ว่าจะเป็นกลไกทางกายภาพอาจจะใช้ในการสร้างตัวเลขสุ่มที่มีการบันทึกไว้แล้วสำหรับการใช้งานในอนาคต - หลักสิ่งที่แรนด์ได้ทำกับพวกเขาล้านตัวเลข . นอกจากนี้ยังรวมการอ้างอิงที่มีชื่อเสียงของเขาเกี่ยวกับสิ่งที่เราจะอธิบายว่าเป็นความแตกต่างระหว่างการสร้างตัวเลขสุ่มและหลอก:"ผู้ใดก็ตามที่พิจารณาวิธีการทางคณิตศาสตร์ในการสร้างเลขสุ่มคือแน่นอนว่าอยู่ในสภาพบาปสำหรับตามที่ได้ชี้ให้เห็นหลายครั้งไม่มีสิ่งใดที่เป็นเลขสุ่ม - มีเพียงวิธีที่จะสร้างตัวเลขสุ่ม และขั้นตอนการคำนวณทางคณิตศาสตร์ที่เข้มงวดของหลักสูตรไม่ใช่วิธีการดังกล่าว "
If you can get access to a very precise clock, you can extract the decimal part of the current time and turn it into a uniform, from which you can derive a normal simulation by the Box-Müller transform:
For instance, on my Linux OS, I can check
$ date +%s.%N
1479733744.077762986
$ date +%s.%N
1479733980.615056616
hence set
> sqrt(-2*log(.077762986))*cos(2*pi*.615056616)
[1] -1.694815
ภาคผนวก:เนื่องจากการคำนวณลอการิทึมและโคไซน์อาจไม่ถือว่าเป็น คู่มือเพียงพอมีตัวแปรของ Box-Müllerที่หลีกเลี่ยงการใช้ฟังก์ชันยอดเยี่ยมเหล่านั้น (ดูการออกกำลังกาย 2.9 ในวิธีการทางสถิติ Monte Carloหนังสือของเรา ):
ตอนนี้เราสามารถโต้แย้งกับรุ่นนี้ได้เพราะความแปรปรวนแบบเอ็กซ์โปเนนเชียล แต่ยังมีวิธีที่ชาญฉลาดมากในการจำลองตัวแปรเหล่านั้นโดยไม่ต้องเรียกฟังก์ชันยอดเยี่ยมเนื่องจาก von Neumann ดังที่สรุปไว้ในอัลกอริทึมนี้ทำซ้ำจากชุดตัวแปรสุ่มที่ไม่ใช่เครื่องแบบของ Luc Devroye :
เป็นที่ยอมรับว่ามันต้องการการคำนวณ 1 / e แต่เพียงครั้งเดียว
If you do not have access to this clock, you can replace this uniform generator by a mechanistic uniform generator, like throwing a dart on a surface with a large number of unit squares or rolling a ball on a unit interval with enough bounces [as in Thomas Bayes' conceptual billiard experiment] or yet throwing matches on a wooden floor with unit width planks and counting the distance to the nearest leftmost separation [as in Buffon's experiment] or yet further to start a roulette wheel with number 1 the lowest and turn the resulting angle of 1 with its starting orientation into a uniform draw.
การใช้ CLTเพื่อประมาณค่าปกตินั้นไม่ใช่วิธีที่ฉันจะแนะนำในขณะที่ (1) คุณยังต้องการตัวแปรอื่น ๆ เพื่อป้อนค่าเฉลี่ยดังนั้นอาจใช้เครื่องแบบในอัลกอริทึม Box-Müllerและ (2) ความแม่นยำเพิ่มขึ้นค่อนข้างมาก ช้าด้วยจำนวนของการจำลอง โดยเฉพาะอย่างยิ่งถ้าใช้ตัวแปรสุ่มต่อเนื่องเช่นผลของลูกเต๋าที่แม้จะมีมากขึ้นกว่าหกใบหน้า อ้างจากโทมัสและคณะ (2007)การสำรวจข้อดีและข้อเสียของเครื่องกำเนิดไฟฟ้าสุ่มแบบเกาส์:
แน่นอนว่าทฤษฎีบทขีด จำกัด กลางเป็นตัวอย่างของวิธี“ ประมาณ” - แม้ว่าจะใช้การคำนวณทางคณิตศาสตร์ที่สมบูรณ์แบบก็ตามสำหรับ K ที่มีค่า จำกัด เอาท์พุทจะไม่เป็นเกาส์เซียน
นี่คือการทดลองที่รวดเร็วเพื่อแสดงให้เห็นถึงปัญหา: ฉันสร้าง 100 ครั้งโดยเฉลี่ยของผลลัพธ์ 30 รายการ:
dies=apply(matrix(sample(1:6,30*100,rep=TRUE),ncol=30),1,mean)
จากนั้นปรับค่าเฉลี่ยเหล่านั้นให้เป็นค่าศูนย์ - ผลต่างหนึ่งตัวแปร
stdies=(dies-3.5)/sqrt(35/12/30)
และดูที่แบบปกติ [หรือขาดมัน] ของตัวอย่างนี้:
ครั้งแรกความพอดีไม่ดีโดยเฉพาะอย่างยิ่งในหางและที่สองค่อนข้างชัดเจนภาพยืนยันว่าจำนวนค่าที่ถ่ายโดยกลุ่มตัวอย่างมีขอบเขตที่น่าอาย (ในการทดลองนี้โดยเฉพาะมีเพียง 34 ค่าที่แตกต่างกันที่ดำเนินการโดยdies
ระหว่าง76/30
และ122/30
.) โดยการเปรียบเทียบถ้าฉันใช้ประโยชน์จากผลลัพธ์ของการตาย 3000 เดียวกัน เพื่อสร้างตัวเลขของเครื่องแบบเทียมเทียมให้เพียงพอ
dies=matrix(apply(matrix(sample(0:5,15*200,rep=TRUE),nrow=15)/6^(1:15),2,sum),ncol=2)
norma=sqrt(-2*log(dies[,1]))*c(cos(2*pi*dies[,2]),sin(2*pi*dies[,2]))
ความพอดีเป็นสิ่งที่ดีเท่าที่ควรจะเป็นสำหรับตัวอย่างขนาด 200 ปกติ (แค่พล็อตอีกอันสำหรับตัวอย่างปกติจริงnorma=rnorm(100)
):
ตามที่แสดงเพิ่มเติมโดยการทดสอบ Kolmogorov-Smirnov:
> ks.test(norma,pnorm)
One-sample Kolmogorov-Smirnov test
data: norma
D = 0.06439, p-value = 0.3783
alternative hypothesis: two-sided
นี่ไม่ใช่การสุ่มอย่างแน่นอนแต่ควรอยู่ใกล้พอเนื่องจากคุณต้องการทดลองแบบคร่าวๆ
ใช้โทรศัพท์ของคุณเพื่อตั้งค่าเที่ยงตรง หลังจากผ่านไป 10 วินาทีให้หยุดมัน (ยิ่งคุณรอมากเท่าไหร่คุณก็ยิ่งจะได้ผลลัพธ์ที่ "สุ่ม" อย่างแท้จริง แต่ 10 วินาทีก็โอเค) ใช้ตัวเลขสุดท้าย (เช่น 10.67 วินาทีจะให้ 67) ใช้ตารางเปอร์เซนต์สำหรับการแจกแจงแบบปกติ ในตัวอย่างนี้คุณเพียงแค่ต้องค้นหา 0.67 และคุณจะพบจำนวน ในกรณีนี้ค่าของคุณประมาณ 0.45 นี่ไม่แม่นยำอย่างสมบูรณ์ แต่จะให้การประมาณที่มั่นคง
หากคุณหมุนต่ำกว่า 50 เพียงทำ 100- [ผลของคุณ] และใช้ตาราง ผลลัพธ์ของคุณจะเหมือนกันโดยมีเครื่องหมายลบเนื่องจากการแสดงสัญลักษณ์ N (0,1)
ให้เราพลิกเหรียญที่ไม่เอนเอียง ครั้ง เริ่มต้นที่ศูนย์เรานับ ถ้าหัว ถ้าหาง หลังจาก เหรียญพลิกเราหารเคาน์เตอร์ด้วย . การใช้ทฤษฎีขีด จำกัด กลางถ้า มีขนาดใหญ่พอสมควรจากนั้นเราควรจะมี "การประมาณค่าโดยประมาณ" ของเกาส์แบบปกติ .
ทำไม? ปล่อย
เป็น iid Bernoulli ตัวแปรสุ่มด้วย . ดังนั้น
ปล่อย . ดังนั้น
normalizing,
เราได้รับตัวแปรสุ่มพร้อมความแปรปรวนของหน่วย
เป็นที่น่าสังเกตว่าเมื่อคุณสามารถสร้างเครื่องแบบ (0,1) คุณสามารถสร้างตัวแปรสุ่มใด ๆ ที่สามารถคำนวณค่าผกผัน cdf ได้โดยเพียงแค่เสียบตัวแปรสุ่มชุดเข้าไปใน inverse CDF
ดังนั้นหนึ่งอาจคำนวณเครื่องแบบ (0,1) ด้วยตนเองได้อย่างไร อย่างที่ @Silverfish พูดถึงมีหลากหลายลูกเต๋าที่ใช้โดยผู้เล่น RPG แบบดั้งเดิม หนึ่งในนั้นคือตายสิบด้าน สมมติว่านี่เป็นดายที่ยุติธรรมตอนนี้เราสามารถสร้างชุดแยก (0, 9)
นอกจากนี้เรายังสามารถใช้ชุดนี้ (0,9) เพื่อแสดงตัวเลขหลักเดียวของตัวแปรสุ่ม ดังนั้นถ้าเราใช้ลูกเต๋าสองลูกเราจะได้ตัวแปรสุ่มแบบสม่ำเสมอที่สามารถหาค่าได้. ด้วยสามลูกเต๋าเราจะได้การแจกแจงแบบสม่ำเสมอ.
ดังนั้นเราสามารถเข้าใกล้เครื่องแบบต่อเนื่อง (0,1) โดยการประมาณมันด้วยการกระจายเครื่องแบบที่ไม่ต่อเนื่อง gridded อย่างประณีตด้วยลูกเต๋า 10 ด้าน สิ่งนี้สามารถเสียบเข้ากับ CDF ผกผันเพื่อสร้างตัวแปรสุ่มที่น่าสนใจ