เครื่องกำเนิดตัวเลขสุ่มตั้งแต่ 1 ถึง 3 เครื่องกำเนิดตัวเลขสุ่ม

เครื่องกำเนิดตัวเลขสุ่มตั้งแต่ 1 ถึง 3 เครื่องกำเนิดตัวเลขสุ่ม

คำอธิบายของเครื่องกำเนิดไฟฟ้า

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

จำนวนตัวเลขที่สร้างขึ้นพร้อมกัน: ตั้งแต่ 1 ถึง 999

ตามค่าเริ่มต้น จะมีการสร้างตัวเลขหนึ่งตัว

ช่วงหมายเลขที่ใช้ได้: ตั้งแต่ 1 ถึง 99,999,999 รวม ในกรณีนี้ ค่าสุดท้ายของช่วงจะต้องมากกว่าค่าเริ่มต้น ตามค่าเริ่มต้น ช่วงตั้งแต่ 1 ถึง 100 จะใช้เพื่อสร้างตัวเลขสุ่ม

ตัวเลขที่สร้างขึ้นสามารถจัดเรียงได้: สุ่ม (ตามค่าเริ่มต้น) จากมากไปหาน้อย และจากน้อยไปมาก

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

"การซ้ำซ้อนของตัวเลข"

ตัวสร้างยังช่วยให้คุณสามารถคัดลอกผลลัพธ์ไปยังคลิปบอร์ดได้ ในการดำเนินการนี้คุณต้องใช้ปุ่ม "คัดลอก" ผลลัพธ์จะถูกวางบนคลิปบอร์ดโดยอัตโนมัติ

หากคุณต้องการคืนค่าของฟิลด์ทั้งหมดกลับเป็นสถานะดั้งเดิมให้คลิกปุ่ม "รีเซ็ต"

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

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

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

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

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

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

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

ยังเป็นที่นิยมในพื้นที่อื่นๆ เรายังมีทั้งรหัสผ่านและตัวเลข

เครื่องกำเนิดตัวเลขสุ่มออนไลน์ของเรา

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

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

ตอนนี้เรามาดูของเรากันดีกว่า เครื่องกำเนิดไฟฟ้าออนไลน์ y และระบุช่วงตัวเลข (จำนวนผู้เข้าร่วม) เช่น เรากำหนดให้ต้องมี 5 หมายเลขทางออนไลน์ เนื่องจากเรามี 5 รางวัล ตอนนี้คลิกปุ่มสร้าง จากนั้นเราจะได้ตัวเลขสุ่ม 5 ตัวทางออนไลน์ นับตั้งแต่ 1 ถึง 112 ตัวเลข 5 ตัวที่สร้างขึ้นทางออนไลน์จะตรงกับหมายเลขซีเรียลของผู้เข้าร่วมทั้งห้าคนที่เป็นผู้ชนะการจับฉลาก ทุกอย่างเรียบง่ายและสะดวกสบาย

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

ทำไมเครื่องกำเนิดตัวเลขสุ่มถึงดีที่สุด?

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

เครื่องสร้างตัวเลขสุ่มออนไลน์ฟรี!

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

สุ่มเลขออนไลน์

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

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

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

สุ่มออนไลน์

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

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

คุณสามารถสร้างตัวเลขสุ่มใน 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 บ่อยกว่าสูตรอื่น

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

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

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

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

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

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

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

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

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

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

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

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

ฉันหลงใหลปริศนาและงานไอทีต่างๆ มาก และเครื่องสร้างตัวเลขสุ่มก็เป็นหนึ่งในงานเหล่านี้ โดยปกติแล้วในช่อง Telegram ของฉัน ฉันจะวิเคราะห์ปริศนาทุกประเภทและงานต่างๆ จากการสัมภาษณ์ ปัญหาเครื่องกำเนิดตัวเลขสุ่มได้รับความนิยมอย่างมาก และฉันต้องการขยายเวลามันให้คงอยู่ต่อไปในแหล่งข้อมูลที่เชื่อถือได้แหล่งใดแหล่งหนึ่ง นั่นคือ ที่นี่ใน 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; สำหรับ (ให้ n=0; n

แต่ใน JS หมายเลข PI สามารถแสดงได้สูงสุด 48 หลักเท่านั้น และไม่มากไปกว่านี้ ดังนั้นจึงยังคงง่ายต่อการทำนายลำดับดังกล่าว และการเรียกใช้ตัวสร้างแต่ละครั้งจะให้ตัวเลขที่เท่ากันเสมอ แต่ตัวสร้างของเราได้เริ่มแสดงตัวเลขตั้งแต่ 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 (แต่ไม่ใช่อัลกอริธึมนี้(!))

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

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

Math.random() ทำงานอย่างไร
แต่ต่างจาก Math.random() PRNG ตรงที่วิธีนี้ใช้ทรัพยากรมาก ความจริงก็คือตัวสร้างนี้ใช้การเรียกของระบบในระบบปฏิบัติการเพื่อเข้าถึงแหล่งเอนโทรปี (ที่อยู่ mac, CPU, อุณหภูมิ ฯลฯ ... )

 

 

สิ่งนี้น่าสนใจ: