เครื่องสร้างตัวเลขสุ่มออนไลน์พร้อมข้อยกเว้น ตัวสร้างตัวเลขสุ่มของ Excel ในฟังก์ชันและการวิเคราะห์ข้อมูล


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

กระบวนการสร้างตัวเลขสุ่มเทียมนั้นอยู่ภายใต้กฎหมายบางประการและมีการใช้กันมานานแล้ว เช่น ในลอตเตอรี่ ในอดีตที่ผ่านมามีการใช้เครื่องจับสลากหรือล็อตเตอรี่ ขณะนี้ในหลายประเทศมีตัวเลขชนะ ลอตเตอรีของรัฐถูกกำหนดอย่างแม่นยำโดยชุดตัวเลขสุ่มที่สร้างขึ้น

ข้อดีของวิธีการ

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

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

วิธีสร้างตัวเลขสุ่มเทียม

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

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

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

ประวัติความเป็นมาของ PRNG

สามารถพิจารณาต้นแบบของเครื่องกำเนิดตัวเลขสุ่มได้ เกมกระดาน Senet ทั่วไปใน อียิปต์โบราณใน 3,500 ปีก่อนคริสตกาล ตามเงื่อนไขที่มีผู้เล่นสองคนเข้าร่วม การเคลื่อนไหวถูกกำหนดโดยการขว้างไม้แบนสีดำและสีขาวสี่อัน - พวกมันเป็น PRNG แบบหนึ่งในยุคนั้น ไม้ถูกโยนในเวลาเดียวกันและนับคะแนน: หากมีใครล้มลงโดยฝั่งสีขาว 1 แต้มและขยับเพิ่มเติมอีก 2 แต้มสีขาว - 2 แต้มเป็นต้น ผู้เล่นได้รับผลลัพธ์สูงสุดห้าคะแนนที่ขว้างไม้สี่อันด้วยด้านสีดำ

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

PRNG ทำงานอย่างต่อเนื่อง เช่น ใน เครื่องสล็อต- ตามกฎหมายของสหรัฐอเมริกา นี่เป็นเงื่อนไขบังคับที่ผู้ให้บริการซอฟต์แวร์ทุกรายต้องปฏิบัติตาม

เรามีลำดับของตัวเลขที่ประกอบด้วยองค์ประกอบที่เป็นอิสระในทางปฏิบัติซึ่งเป็นไปตามการแจกแจงที่กำหนด ตามกฎแล้วการกระจายแบบสม่ำเสมอ

คุณสามารถสร้างตัวเลขสุ่มใน Excel ในรูปแบบที่แตกต่างกันและวิธีการ พิจารณาเฉพาะสิ่งที่ดีที่สุดเท่านั้น

ฟังก์ชันตัวเลขสุ่มใน Excel

  1. ฟังก์ชัน RAND จะส่งคืนจำนวนจริงแบบสุ่มที่มีการกระจายสม่ำเสมอ มันจะน้อยกว่า 1 มากกว่าหรือเท่ากับ 0
  2. ฟังก์ชัน RANDBETWEEN ส่งกลับจำนวนเต็มแบบสุ่ม

ลองดูการใช้งานพร้อมตัวอย่าง

การสุ่มตัวอย่างตัวเลขสุ่มโดยใช้ RAND

ฟังก์ชันนี้ไม่จำเป็นต้องมีข้อโต้แย้ง (RAND())

ตัวอย่างเช่น หากต้องการสร้างจำนวนจริงแบบสุ่มในช่วง 1 ถึง 5 ให้ใช้สูตรต่อไปนี้ =RAND()*(5-1)+1

จำนวนสุ่มที่ส่งคืนจะถูกกระจายอย่างสม่ำเสมอในช่วงเวลาหนึ่ง

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

  1. คลิกที่เซลล์ที่มีตัวเลขสุ่ม
  2. ในแถบสูตร ให้เลือกสูตร
  3. กด F9 และเข้า

เรามาตรวจสอบความสม่ำเสมอของการแจกแจงของตัวเลขสุ่มจากตัวอย่างแรกโดยใช้ฮิสโตแกรมการแจกแจง


ช่วงของค่าแนวตั้งคือความถี่ แนวนอน - "กระเป๋า"



ฟังก์ชัน RANDBETWEEN

ไวยากรณ์สำหรับฟังก์ชัน RANDBETWEEN คือ (ขอบเขตล่าง; ขอบเขตบน) อาร์กิวเมนต์แรกต้องน้อยกว่าอาร์กิวเมนต์ที่สอง มิฉะนั้นฟังก์ชันจะเกิดข้อผิดพลาด ขอบเขตจะถือว่าเป็นจำนวนเต็ม สูตรละทิ้งส่วนที่เป็นเศษส่วน

ตัวอย่างการใช้ฟังก์ชัน:

ตัวเลขสุ่มที่มีความแม่นยำ 0.1 และ 0.01:

วิธีสร้างตัวสร้างตัวเลขสุ่มใน Excel

มาสร้างตัวสร้างตัวเลขสุ่มที่สร้างค่าจากช่วงที่กำหนด เราใช้สูตร เช่น: =INDEX(A1:A10,INTEGER(RAND()*10)+1)

มาสร้างตัวสร้างตัวเลขสุ่มในช่วงตั้งแต่ 0 ถึง 100 โดยเพิ่มขั้นละ 10

จากรายการ ค่าข้อความคุณต้องเลือก 2 อันแบบสุ่ม เมื่อใช้ฟังก์ชัน RAND เราจะเปรียบเทียบค่าข้อความในช่วง A1:A7 กับตัวเลขสุ่ม

ลองใช้ฟังก์ชัน INDEX เพื่อเลือกค่าข้อความสุ่มสองค่าจากรายการเดิม

หากต้องการเลือกค่าสุ่มหนึ่งค่าจากรายการ ให้ใช้สูตรต่อไปนี้: =INDEX(A1:A7,RANDBETWEEN(1,COUNT(A1:A7)))

เครื่องกำเนิดตัวเลขสุ่มการแจกแจงแบบปกติ

ฟังก์ชัน RAND และ RANDBETWEEN จะสร้างตัวเลขสุ่มด้วยการแจกแจงแบบสม่ำเสมอ ค่าใดๆ ที่มีความน่าจะเป็นเท่ากันสามารถตกไปอยู่ในขีดจำกัดล่างของช่วงที่ร้องขอและไปอยู่ในขีดจำกัดบนได้ ส่งผลให้มีสเปรดมหาศาลจากมูลค่าเป้าหมาย

การแจกแจงแบบปกติหมายความว่าตัวเลขที่สร้างขึ้นส่วนใหญ่ใกล้เคียงกับหมายเลขเป้าหมาย มาปรับสูตร RANDBETWEEN และสร้างอาร์เรย์ข้อมูลด้วย การกระจายตัวตามปกติ.

ราคาของผลิตภัณฑ์ X คือ 100 รูเบิล ผลิตทั้งชุดเป็นไปตามการกระจายแบบปกติ ตัวแปรสุ่มยังเป็นไปตามการแจกแจงความน่าจะเป็นแบบปกติด้วย

ภายใต้เงื่อนไขดังกล่าว ค่าเฉลี่ยของช่วงคือ 100 รูเบิล มาสร้างอาร์เรย์และสร้างกราฟด้วยการแจกแจงแบบปกติโดยมีค่าเบี่ยงเบนมาตรฐาน 1.5 รูเบิล

เราใช้ฟังก์ชัน: =NORMINV(RAND();100;1.5)

Excel คำนวณว่าค่าใดอยู่ในช่วงความน่าจะเป็น เนื่องจากความน่าจะเป็นในการผลิตผลิตภัณฑ์ที่มีราคา 100 รูเบิลนั้นสูงสุด สูตรจึงแสดงค่าใกล้ 100 บ่อยกว่าสูตรอื่น

มาดูการวางแผนกราฟกันดีกว่า ขั้นแรกคุณต้องสร้างตารางที่มีหมวดหมู่ ในการดำเนินการนี้ เราแบ่งอาร์เรย์ออกเป็นระยะ:

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

ดำเนินการ ลอตเตอรี่ต่างๆ, การชิงโชค ฯลฯ มักจัดขึ้นในหลายกลุ่มหรือหน้าสาธารณะบนโซเชียลเน็ตเวิร์ก, Instagram ฯลฯ และเจ้าของบัญชีใช้เพื่อดึงดูดผู้ชมใหม่เข้าสู่ชุมชน

ผลลัพธ์ของการจับรางวัลมักขึ้นอยู่กับโชคของผู้ใช้ เนื่องจากผู้รับรางวัลจะถูกกำหนดแบบสุ่ม

ในการตัดสินใจนี้ ผู้จัดลอตเตอรี่มักจะใช้เครื่องสร้างตัวเลขสุ่มแบบออนไลน์หรือที่ติดตั้งไว้ล่วงหน้าซึ่งแจกให้ฟรีๆ

ทางเลือก

บ่อยครั้งที่การเลือกเครื่องกำเนิดไฟฟ้าอาจเป็นเรื่องยากเนื่องจากฟังก์ชันการทำงานแตกต่างกันมาก - สำหรับบางเครื่องมีข้อ จำกัด อย่างมากสำหรับบางเครื่องก็ค่อนข้างกว้าง

กำลังดำเนินการมากพอแล้ว จำนวนมากบริการดังกล่าว แต่ความยากอยู่ที่ขอบเขตต่างกัน

ตัวอย่างเช่น หลายๆ คนมีความเชื่อมโยงกับฟังก์ชันการทำงานบางอย่าง เครือข่ายทางสังคม(ตัวอย่างเช่น แอปพลิเคชั่นตัวสร้างจำนวนมากบน VKontakte ใช้งานได้กับลิงก์จากโซเชียลเน็ตเวิร์กนี้เท่านั้น)

เครื่องกำเนิดไฟฟ้าที่ง่ายที่สุดเพียงสุ่มกำหนดตัวเลขภายในช่วงที่กำหนด

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

โดยพื้นฐานแล้วพวกมันไม่มีประโยชน์อื่นใด

<Рис. 1 Генератор>

คำแนะนำ!เมื่อเลือกเครื่องกำเนิดไฟฟ้าที่เหมาะสมที่สุด สิ่งสำคัญคือต้องพิจารณาว่าจะใช้กับอะไร

ข้อมูลจำเพาะ

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

ตารางที่ 1. คุณลักษณะการทำงาน ใบสมัครออนไลน์เพื่อสร้างตัวเลขสุ่ม
ชื่อ เครือข่ายสังคม ผลลัพธ์หลายรายการ เลือกจากรายการหมายเลข วิดเจ็ตออนไลน์สำหรับไซต์ เลือกจากช่วง ปิดการใช้งานการทำซ้ำ
แรนด์สตัฟฟ์ ใช่ ใช่ เลขที่ ใช่ เลขที่
หล่อมาก เว็บไซต์อย่างเป็นทางการหรือ VKontakte เลขที่ เลขที่ ใช่ ใช่ ใช่
ตัวเลขสุ่ม เว็บไซต์อย่างเป็นทางการ เลขที่ เลขที่ เลขที่ ใช่ ใช่
แรนดัส เว็บไซต์อย่างเป็นทางการ ใช่ เลขที่ เลขที่ ใช่ เลขที่
ตัวเลขสุ่ม เว็บไซต์อย่างเป็นทางการ ใช่ เลขที่ เลขที่ เลขที่ เลขที่

การใช้งานทั้งหมดที่กล่าวถึงในตารางมีรายละเอียดเพิ่มเติมด้านล่าง

<Рис. 2 Случайные числа>

แรนด์สตัฟฟ์

<Рис. 3 RandStuff>

คุณสามารถใช้แอปพลิเคชันนี้ออนไลน์ได้โดยไปที่ลิงก์ไปยังเว็บไซต์อย่างเป็นทางการ http://randstuff.ru/number/

นี่คือเครื่องกำเนิดตัวเลขสุ่มอย่างง่าย โดดเด่นด้วยการทำงานที่รวดเร็วและมีเสถียรภาพ

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

ลักษณะเฉพาะของบริการนี้คือสามารถเลือกหมายเลขสุ่มได้ทั้งจากช่วงที่ระบุและจากรายการหมายเลขเฉพาะที่สามารถระบุได้บนเว็บไซต์

ข้อดี:

  • การทำงานที่มั่นคงและรวดเร็ว
  • ขาดการเชื่อมต่อโดยตรงกับเครือข่ายโซเชียล
  • คุณสามารถเลือกหนึ่งหรือหลายหมายเลข
  • คุณสามารถเลือกได้เฉพาะหมายเลขที่ระบุเท่านั้น

จุดด้อย:

  • ไม่สามารถดำเนินการวาด VKontakte ได้ (ต้องใช้แอปพลิเคชันแยกต่างหาก)
  • แอปพลิเคชันสำหรับ VKontakte ไม่ได้ทำงานในเบราว์เซอร์ทั้งหมด
  • บางครั้งผลลัพธ์อาจดูคาดเดาได้เนื่องจากใช้อัลกอริทึมการคำนวณเพียงอันเดียวเท่านั้น

บทวิจารณ์ของผู้ใช้แอปพลิเคชันนี้มีดังนี้: “ เราตัดสินผู้ชนะในกลุ่ม VKontakte ผ่านบริการนี้ ขอบคุณ” “คุณเก่งที่สุด” “ฉันใช้บริการนี้เท่านั้น”

หล่อมาก

<Рис. 4 Cast Lots>

แอปพลิเคชันนี้เป็นตัวสร้างฟังก์ชันอย่างง่าย ซึ่งใช้งานบนเว็บไซต์อย่างเป็นทางการในรูปแบบของแอปพลิเคชัน VKontakte

นอกจากนี้ยังมีวิดเจ็ตตัวสร้างสำหรับแทรกลงในเว็บไซต์ของคุณ

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

นั่นคือเมื่อดำเนินการหลายรุ่นติดต่อกันในเซสชันเดียว จำนวนจะไม่ถูกทำซ้ำ

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

เชิงลบ:

  • ไม่สามารถระบุผลลัพธ์หลายรายการพร้อมกันได้
  • ไม่สามารถเลือกจากรายการหมายเลขเฉพาะได้
  • หากต้องการเลือกผู้ชนะในที่สาธารณะ คุณต้องใช้วิดเจ็ต VKontakte แยกต่างหาก

บทวิจารณ์ของผู้ใช้มีดังนี้: “ใช้งานได้เสถียร ค่อนข้างสะดวกในการใช้งาน” “ฟังก์ชั่นสะดวก” “ฉันใช้บริการนี้เท่านั้น”

ตัวเลขสุ่ม

<Рис. 5 Случайное число>

บริการนี้อยู่ที่ http://randomnumber.rf/

เครื่องกำเนิดไฟฟ้าอย่างง่ายด้วย ฟังก์ชั่นขั้นต่ำและคุณสมบัติเพิ่มเติม

สามารถสุ่มสร้างตัวเลขภายในช่วงที่กำหนดได้ (สูงสุดตั้งแต่ 1 ถึง 99999)

ไซต์ไม่มีการออกแบบกราฟิกใดๆ ดังนั้นหน้าเว็บจึงโหลดได้ง่าย

สามารถคัดลอกหรือดาวน์โหลดผลลัพธ์ได้ด้วยการคลิกปุ่มเพียงปุ่มเดียว

เชิงลบ:

  • ขาดวิดเจ็ตสำหรับ VKontakte;
  • ไม่มีความเป็นไปได้ในการจับฉลาก
  • ไม่มีทางที่จะฝังผลลัพธ์ลงในบล็อกหรือเว็บไซต์ได้

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

แรนดัส

<Рис. 6 Рандомус>

คุณสามารถใช้เครื่องสร้างตัวเลขสุ่มนี้ได้ที่ http://randomus.ru/

อีกอันหนึ่งค่อนข้างเรียบง่าย แต่ เครื่องกำเนิดตัวเลขสุ่มเชิงฟังก์ชัน

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

เชิงลบ:

  • ความเป็นไปไม่ได้ที่จะจับฉลากจากการโพสต์ซ้ำ ฯลฯ
  • ไม่มีแอปพลิเคชันสำหรับ VKontakte หรือวิดเจ็ตสำหรับไซต์
  • ไม่สามารถปิดใช้งานผลลัพธ์ที่เกิดซ้ำได้

  • บทช่วยสอน

คุณเคยสงสัยหรือไม่ว่า Math.random() ทำงานอย่างไร? ตัวเลขสุ่มคืออะไร และได้มาอย่างไร? ลองนึกภาพคำถามสัมภาษณ์ - เขียนโปรแกรมสร้างตัวเลขสุ่มของคุณด้วยโค้ดสองสามบรรทัด แล้วมันคืออะไร อุบัติเหตุ และเป็นไปได้ไหมที่จะคาดเดาได้?

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

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

เครื่องกำเนิดตัวเลขสุ่มหลอกและเครื่องกำเนิดตัวเลขสุ่ม

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

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

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

เอนโทรปีเป็นการวัดความผิดปกติ เอนโทรปีของข้อมูลเป็นการวัดความไม่แน่นอนหรือความไม่แน่นอนของข้อมูล
ปรากฎว่าในการสร้างลำดับสุ่มหลอก เราจำเป็นต้องมีอัลกอริธึมที่จะสร้างลำดับที่แน่นอนตามสูตรบางอย่าง แต่ลำดับดังกล่าวสามารถคาดเดาได้ อย่างไรก็ตาม ลองจินตนาการว่าเราจะเขียนตัวสร้างตัวเลขสุ่มของเราเองได้อย่างไร ถ้าเราไม่มี Math.random()

PRNG มีอัลกอริทึมบางอย่างที่สามารถทำซ้ำได้
RNG เป็นกระบวนการรับตัวเลขทั้งหมดจากสัญญาณรบกวนบางประเภท ซึ่งมีความสามารถในการคำนวณซึ่งมีแนวโน้มเป็นศูนย์ ในเวลาเดียวกัน RNG มีอัลกอริธึมบางอย่างในการปรับการกระจายให้เท่ากัน

เราคิดอัลกอริธึม PRNG ขึ้นมาเอง

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

ฟังก์ชั่น* rand() ( const n = 100; const mod = 2; ให้ i = 0; ในขณะที่ (จริง) ( ​​yield i % mod; if (i++ > n) i = 0; ) ) ให้ i = 0; สำหรับ (ให้ x ของ rand()) ( ถ้า (i++ > 100) แตก; console.log(x); )
ฟังก์ชันนี้สร้างลำดับ 01010101010101... และไม่สามารถเรียกว่าการสุ่มหลอกได้ เพื่อให้ตัวสร้างสุ่มได้ จะต้องผ่านการทดสอบบิตถัดไป แต่เราไม่มีงานดังกล่าว อย่างไรก็ตาม แม้ว่าจะไม่มีการทดสอบใดๆ เราก็สามารถทำนายลำดับถัดไปได้ ซึ่งหมายความว่าอัลกอริทึมดังกล่าวไม่เหมาะสม แต่เราอยู่ในทิศทางที่ถูกต้อง

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

Const vector = [...Math.PI.toFixed(48).replace(".","")]; function* rand() ( สำหรับ (ให้ i=3; i<1000; i++) { if (i >99) ผม = 2; แต่ใน JS หมายเลข PI สามารถแสดงได้สูงสุด 48 หลักเท่านั้น และไม่มากไปกว่านี้ ดังนั้นจึงยังคงง่ายต่อการทำนายลำดับดังกล่าว และการเรียกใช้ตัวสร้างแต่ละครั้งจะให้ตัวเลขที่เท่ากันเสมอ แต่ตัวสร้างของเราได้เริ่มแสดงตัวเลขตั้งแต่ 0 ถึง 9 แล้ว

เรามีตัวสร้างตัวเลขตั้งแต่ 0 ถึง 9 แต่การแจกแจงไม่เท่ากันมากและจะสร้างลำดับเดียวกันทุกครั้ง

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

Function* rand() ( la newNumVector = () => [...(+new Date)+""].reverse(); la vector = newNumVector(); ให้ i=2; while (true) ( ​​​​ถ้า ( i++ > 99) i = 2; ให้ n=-1;< vector.length) yield (vector[n] % i); vector = newNumVector(); } } // TEST: let i = 0; for (let x of rand()) { if (i++ >100) แตก;
console.log(x)

นี่ดูเหมือนเครื่องกำเนิดตัวเลขสุ่มหลอกอยู่แล้ว และ Math.random() เดียวกันคือ PRNG เราจะพูดถึงมันในภายหลัง ยิ่งไปกว่านั้น แต่ละครั้งเราจะได้หมายเลขแรกที่แตกต่างกัน จริงๆแล้วเรื่องพวกนี้ตัวอย่างง่ายๆคุณสามารถเข้าใจได้ว่าเครื่องกำเนิดตัวเลขสุ่มที่ซับซ้อนมากขึ้นทำงานอย่างไร

และยังมีอัลกอริธึมสำเร็จรูปอีกด้วย เพื่อเป็นตัวอย่าง ลองดูที่หนึ่งในนั้น — นี่คือ Linear Congruent PRNG (LCPRNG)

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

ตัวเลขสุ่ม ตัวอย่างการใช้อัลกอริทึมดังกล่าวใน JavaScript:<30; i++) console.log(rand())
ค่าคอน = 45; const ค = 21; ค่าคงที่ ม. = 67; เมล็ด var = 2; const rand = () => seed = (a * seed + c) % m; สำหรับ (ให้ i=0; i

ภาษาโปรแกรมหลายภาษาใช้ LCPRNG (แต่ไม่ใช่อัลกอริธึมนี้(!))

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

Math.random() ทำงานอย่างไร

เมธอด Math.random() ส่งคืนตัวเลขจุดลอยตัวสุ่มหลอกจาก range = crypto.getRandomValues(new Uint8Array(1)); console.log(ค่า)
แต่ต่างจาก Math.random() PRNG ตรงที่วิธีนี้ใช้ทรัพยากรมาก ความจริงก็คือตัวสร้างนี้ใช้การเรียกของระบบในระบบปฏิบัติการเพื่อเข้าถึงแหล่งเอนโทรปี (ที่อยู่ mac, CPU, อุณหภูมิ ฯลฯ ... )

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

การตั้งค่าพื้นฐานของตัวสร้างตัวเลขสุ่ม:

  • จำนวนตัวเลข
  • ช่วงหมายเลข
  • ประเภทตัวคั่น
  • เปิด/ปิดฟังก์ชั่นลบการซ้ำ (ตัวเลขที่ซ้ำกัน)

จำนวนทั้งหมดถูกจำกัดอย่างเป็นทางการไว้ที่ 1,000 คน โดยสูงสุด 1 พันล้านคน ตัวเลือกตัวคั่น: ช่องว่าง จุลภาค อัฒภาค

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

ตัวเลือกแอปพลิเคชันสำหรับเครื่องกำเนิดตัวเลขสุ่ม

เครื่องสร้างตัวเลขสุ่ม (RNG ใน JS พร้อมการกระจายแบบสม่ำเสมอ) จะมีประโยชน์สำหรับผู้เชี่ยวชาญ SMM และเจ้าของกลุ่มและชุมชนบนโซเชียลเน็ตเวิร์ก Instagram, Facebook, VKontakte, Odnoklassniki เพื่อตัดสินผู้ชนะลอตเตอรี่ การแข่งขัน และการจับรางวัล

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

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