เราสามารถสร้างตัวเลขสุ่มโดยใช้ตัวเลขไม่ลงตัวเช่น like และ e ได้หรือไม่?


21

หมายเลขที่ไม่มีตัวตนเช่น ,และมีลำดับที่ไม่ซ้ำกันและไม่ซ้ำกันหลังจากจุดทศนิยม หากเราแยกตัวเลข -th จากตัวเลขดังกล่าว (โดยที่คือจำนวนครั้งที่เรียกว่าวิธีการ) และสร้างตัวเลขด้วยตัวเลขตามที่เป็นอยู่เราจะไม่ได้รับตัวสร้างตัวเลขสุ่มสมบูรณ์หรือไม่ ตัวอย่างเช่นหากเราใช้ ,และตัวเลขแรกคือ 123, อันที่สองคือ 471, อันถัดไปคือ 184 เป็นต้นπอี2nn2อีπ


30
คุณมีคำนิยามที่แปลกประหลาดของ "สุ่ม" ในหัวของคุณ "สุ่ม" หมายถึง "คาดเดาไม่ได้" ลำดับของคุณคาดเดาไม่ได้อย่างไร คุณมีคำจำกัดความของคำว่า "สุ่ม" ในใจ? บางทีสิ่งที่คุณกำลังเรียกว่า "สุ่ม" อาจมีชื่ออื่น
Eric Lippert

7
หมายเหตุอัลกอริทึมหัวจุกสามารถใช้ในการสร้างเลขฐานสิบหกใด ๆ ใน pi โดยไม่ต้องสร้างตัวเลขก่อนหน้า
rcgldr

10
@EricLippert เครื่องกำเนิดเลขเทียมทั้งหมดไม่สามารถคาดเดาได้ใช่ไหม
Federico Poloni

7
คำดังกล่าวเกิดขึ้นสองสามครั้ง: นี่คือ "สุ่มหมายเลข psuedo" ไม่ใช่ "สุ่มหมายเลข" มันเป็นตัวเลขที่สร้างอัลกอริธึม (ไม่ใช่สุ่ม) แต่มีคุณสมบัติที่ต้องการมากมายที่มีตัวเลขสุ่ม อัลกอริทึมอื่นคืออัลกอริทึม "สมุดโทรศัพท์ NYC" ซึ่งคุณจะลงรายการหมายเลขโทรศัพท์ตามตัวอักษรและใช้ตัวเลขสุดท้ายจากแต่ละหมายเลข ไม่ใช่แบบสุ่ม แต่เป็นแบบหลอกเทียมที่มีพฤติกรรมทางสถิติที่ค่อนข้างดี!
Cort Ammon - Reinstate Monica

5
"Pseudo" หมายถึง "คล้ายกับ แต่ไม่ใช่" ดังนั้นตัวเลขสุ่มหลอกจึงคล้ายกับ แต่ไม่ใช่ตัวเลขสุ่ม ดังนั้นฉันไม่ได้ติดตามความคิดของคุณที่นี่ ตอนนี้ PRNGs ความแข็งแรงของ crypto มีคุณสมบัติที่ต้องการว่าหากสถานะภายในไม่เป็นที่รู้จักของผู้โจมตีไม่มีการทดสอบทางสถิติที่เรามีสามารถจำแนก crypto PRNG จาก RNG ที่แท้จริงและนั่นรวมถึงการคาดเดาไม่ได้ แต่ตัวเลขของปี่ไม่มีคุณสมบัตินั้น พวกเขาคาดการณ์ได้สูง
Eric Lippert

คำตอบ:


17

ข้อเสียที่ชัดเจนที่สุดคือความซับซ้อนที่ไม่จำเป็นของอัลกอริทึม PRNG ตามจำนวนอตรรกยะ พวกเขาต้องการการคำนวณต่อตัวเลขที่สร้างขึ้นมากกว่า LCG; และความซับซ้อนนี้จะเพิ่มขึ้นตามลำดับ การคำนวณ 256 บิตของπที่สองควอดล้านล้านนั้นใช้เวลา 23 วันในคอมพิวเตอร์ 1,000 เครื่อง (ย้อนกลับไปในปี 2010) ซึ่งเป็นความซับซ้อนที่ค่อนข้างห้ามปรามสำหรับ RNG


47

สำหรับคำจำกัดความที่สมบูรณ์แบบใด ๆ กลไกที่คุณอธิบายไม่ใช่ตัวสร้างตัวเลขสุ่มที่สมบูรณ์แบบ

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

  • เราไม่ทราบว่าจริง ๆ แล้วทุกหลักเกิดขึ้นอย่างเท่าเทียมกันบ่อยครั้งในการขยายทศนิยมของπหรือ  e (แม้ว่าเราสงสัยว่าพวกเขาทำ)

  • ในหลาย ๆ สถานการณ์เราต้องการตัวเลขสุ่มที่ไม่สามารถคาดเดาได้ (แน่นอนถ้าคุณถามคนที่สุ่มว่า "สุ่ม" หมายความว่าอะไรพวกเขาอาจพูดอะไรบางอย่างเกี่ยวกับการคาดเดาไม่ได้) ตัวเลขของค่าคงที่ที่รู้จักกันดีสามารถคาดเดาได้ทั้งหมด

  • เรามักจะต้องการสร้างตัวเลขสุ่มอย่างรวดเร็วพอสมควร แต่การสร้างตัวเลขที่ต่อเนื่องของค่าคงที่ทางคณิตศาสตร์มีแนวโน้มที่จะค่อนข้างแพง

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


11
สำหรับจุดที่สามจะต้องมี 'ความลับ' ที่ป้อนเข้าสู่กระบวนการสร้างของคุณเพื่อให้ไม่สามารถคาดเดาได้ (กระบวนการสร้างตัวเองควรจะกำหนดไว้ถ้าเราไม่ต้องการพึ่งพาเครื่องสร้างตัวเลขแบบสุ่มอีกตัว) นี้พิเศษการป้อนข้อมูลมักจะเรียกว่าเมล็ดพันธุ์
จิ้งจกไม่ต่อเนื่อง

6
@Discretelizard สิ่งนี้เป็นความจริง แต่มีขอบเขตไม่มากสำหรับการเริ่มต้นเกิน "ส่งคืนตัวเลขต่อเนื่องที่เริ่มต้นด้วยตำแหน่ง " ตามเวลาที่คุณเคยเห็น2 บันทึกsตัวเลขลำดับที่เกิดขึ้นเพียงไม่กี่ครั้งในครั้งแรกs 2หลักπดังนั้นจึงเป็นเรื่องที่ไม่ซ้ำกันภายในครั้งแรกของตัวเลขมีโอกาสสูงและคุณรู้ว่าเมล็ดพันธุ์ s2เข้าสู่ระบบss2πs
David Richerby

2
@Barmar: ณ จุดนั้นคุณต้องถามว่าเทคนิคนี้มีประสิทธิภาพมากกว่าหรือไม่ (และประหยัดพื้นที่) มากกว่า "PRNG" แบบมาตรฐาน
เควิน

2
ตัวเลขของ pi หรือ e นั้นไม่สามารถคาดเดาได้อย่างสมบูรณ์โดยเฉพาะอย่างยิ่งเนื่องจากตัวแสดง / ผู้รับ / ตัวแบ่งรหัส ฯลฯ ไม่มีความคิดว่าไกลแค่ไหนในลำดับที่คุณเป็นอยู่แล้ว หากคุณเริ่มต้นด้วยตัวเลข 237423 ของลำดับมันจะใช้เวลานานในการคิดออกว่าจะสุ่ม
วิศวกรที่กลับรายการ

10
@DaveBoltman หากเราไม่ได้ทำอะไรที่เหมือนการเข้ารหัสไม่มีใครที่จะใส่ใจพอที่จะคิดออก หากเรากำลังทำการเข้ารหัสมันเป็นข้อสันนิษฐานมาตรฐานที่ฝ่ายตรงข้ามของคุณรู้ว่าอัลกอริทึมที่คุณใช้ซึ่งในกรณีนี้รวมถึงจำนวนอตรรกยะที่เรียงตามลำดับและมาจากการเลือกตัวเลขยกเว้นพารามิเตอร์ใด ๆ เช่น "เริ่มที่หลัก " หากฝ่ายตรงข้ามไม่ทราบว่าคุณใช้หมายเลขใดอยู่ให้แน่ใจว่าตัวเลขถัดไปอาจเป็นอะไรก็ได้ แต่จากนั้นพวกเขาเดาว่ามันคือsและเกมจบ วันเกิดของฉัน
David Richerby

29

มันไม่มีประโยชน์ในการเข้ารหัสเพราะศัตรูสามารถทำนายตัวเลขทุกหลักได้ นอกจากนี้ยังใช้เวลานานมาก


11
OP ไม่เคยพูดถึงการเข้ารหัส ...
AnoE

13
@AnoE ดังนั้น ว่ากระบวนการนี้จะไร้ประโยชน์ cryptographically ยังคงมีความเกี่ยวข้องเพราะ crypto เป็นผู้ใช้ตัวยงของการสุ่ม หากคุณนำอุปกรณ์มา/dev/randomและ/dev/urandomใครบางคนจะนำมาเข้ารหัสอย่างสม่ำเสมอ
Greg Schmit - Reinstate Monica

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

6
นี่คือคำตอบสำหรับคำถาม หมายเหตุ OP ของคำถามที่เชื่อมโยงใช้ตัวเลขสุ่มสำหรับการเพาะการวิเคราะห์ monte carlo ควรพิจารณาการอัปเดตที่อยู่ที่ถามคำถาม mathoverflow.net/questions/26942/…
CramerTV

8
แน่นอนว่ามีแอปพลิเคชั่นมากมายที่ PRNG ไม่จำเป็นต้องมีความปลอดภัยด้วยการเข้ารหัส แต่ OP ไม่ได้ถามว่ามันมีประโยชน์สำหรับวัตถุประสงค์บางอย่างหรือไม่พวกเขาถามว่าวิธีนี้เป็น "perfect RNG" หรือไม่ ในขณะที่พวกเขาไม่ได้อธิบายความหมายของคำว่า "สมบูรณ์แบบ" ความจริงที่ว่ามันไม่เหมาะสมสำหรับการใช้งานหลักอย่างใดอย่างหนึ่งของ RNGs ดูเหมือนจะเกี่ยวข้องกับการตอบคำถามนั้นมาก
Geoffrey Brent

7

( อัปเดตหลังจากที่หลายคนชี้ให้เห็นว่าเครื่องกำเนิดเลขสุ่มนั้นไม่เหมือนกับลำดับปกติทั่วไป)

หากคุณถามว่าคุณสามารถหาลำดับปกติจากπ (เช่นตัวเลขทั้งหมดปรากฏอย่างสม่ำเสมอ) หรือไม่นั้นมีคำตอบมากมายสำหรับการไหลเวียนของคณิตศาสตร์ ตัวอย่างเช่นคำตอบเกี่ยวกับการแจกแจงหลักของ Piบอกว่า:

... เป็นที่เชื่อกันว่าπเป็นจำนวนปกติ (~ การแจกแจงแบบสม่ำเสมอของลำดับตัวเลขทุกหลัก)

สำหรับข้อมูลการกระจายตัวเลขดูตัวอย่างเช่นhttp://www.eveandersson.com/pi/precalculated-frequenciesหรือhttps://thestarman.pcministry.com/math/pi/RandPI.html (ตัวเลข 1,000 ตัวแรก):

ป้อนคำอธิบายรูปภาพที่นี่

ที่ mathoverflow ก็มีคำตอบที่ดีเช่นกัน:


3
หากคุณเชื่อว่าคำถามนั้นซ้ำซ้อนทำไมคุณตอบคำถามนี้ คุณควรตั้งค่าสถานะมันไม่เสริมสร้างพฤติกรรมการโพสต์ที่ไม่พึงประสงค์
dkaeae

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

6
น่าเสียดายที่เพียงเพราะตัวเลขเป็นเรื่องปกติไม่ได้หมายความว่าการแสดงผลตัวเลขจะให้ RNG ที่ดี ผลลัพธ์ของ RNG ดังกล่าวยังคงคาดเดาได้ทั้งหมด ไม่ว่าจะเป็นที่ยอมรับได้อาจขึ้นอยู่กับแอปพลิเคชัน ดังนั้นฉันไม่คิดว่ามันค่อนข้างง่ายเหมือนการพูดว่า "pi เป็นเรื่องปกติกรณีปิด"
DW

2
นั่นเป็นเพียงการสังเกตอารมณ์สำหรับตัวเลขสองสามตัวแรก? สิ่งที่จะหมายถึงโดยที่?
marshal craft

1
@DW ฉันพูดถึงว่าฉันตั้งใจจะใช้ตัวเลขผสมกันเช่นπและ e และโปรดบอกว่าเอาท์พุทจะสามารถคาดเดาได้อย่างไรหากเราไม่ทราบว่าเครื่องกำเนิดหายไปไกลแค่ไหน?
Abhradeep Sarkar

1

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

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

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


4
πอี

3
ลิงก์คำตอบของ Ayrat ไปยังไซต์อื่น ๆ ที่นักคณิตศาสตร์ได้ทำการทดสอบเหล่านี้ พวกเขาเชื่อ แต่ยังไม่ได้พิสูจน์ว่าπผ่านการทดสอบทางสถิติแล้ว
Barmar

ใช่นั่นคือสิ่งที่ฉันหมายถึงในย่อหน้าสุดท้ายของฉัน - แค่ลองสังเกตุว่ามันคุ้มค่า แต่มันก็ไม่ได้รับการพิสูจน์อย่างจริงจัง (หรือไม่สามารถคาดเดาได้ว่าเป็นเรื่องจริง) สำหรับการฉายรังสีที่ดูซับซ้อน @DavidRicherby, @ Barmar
AnoE

1

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


4
ไม่มีปัญหายกเว้นความไร้ประสิทธิภาพขั้นต้นความจริงที่ว่าคุณต้องพึ่งพาฝ่ายตรงข้ามที่ไม่ทราบว่าอัลกอริทึมของคุณคืออะไรความจริงที่ว่าตัวเลือกกำเนิดที่ไม่ดีอาจนำไปสู่ลำดับที่แย่มาก ...
David Richerby

4
2πอี

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