ตัวเลขสุ่มหลอกที่เป็นนามธรรมมีการใช้กันอย่างแพร่หลายในการออกแบบซอฟต์แวร์คอมพิวเตอร์ บทความนี้แนะนำหลักการทั่วไปของการสร้างตัวเลขสุ่มหลอก และการใช้คลาส Random และวิธีการที่มีให้ใน ASP.NET Framework เพื่อสร้างตัวเลขสุ่มในช่วงต่างๆ ที่ตรงตามข้อกำหนดต่างๆ สุดท้าย เมื่อรวมกับแบบฟอร์มการควบคุมเว็บ จะมีการอธิบายการประยุกต์ใช้ตัวเลขสุ่มใน ASP.NET ในการออกแบบซอฟต์แวร์
คำสำคัญ ASP.NET การสร้างตัวเลขสุ่มหลอก เว็บ
ตัวเลขสุ่มเหมือนสุ่มใช้กันอย่างแพร่หลายในการออกแบบซอฟต์แวร์ เพื่อที่จะติดตามลำดับแบบสุ่มอย่างแท้จริง ผู้คนได้ใช้วิธีการทางกายภาพแบบดั้งเดิมหลายวิธีเพื่อสร้างลำดับการกระจายที่สม่ำเสมอซึ่งตรงตามความแม่นยำ (จำนวนบิต) ภายในช่วงที่กำหนด ข้อบกพร่องของพวกเขาคือ: ความเร็วช้า ประสิทธิภาพต่ำ ต้องการพื้นที่เก็บข้อมูลจำนวนมาก พื้นที่และไม่สามารถใช้งานได้อีกครั้ง เพื่อตอบสนองความต้องการของการวิจัยการจำลองด้วยคอมพิวเตอร์ ผู้คนหันมาค้นคว้าเกี่ยวกับการใช้อัลกอริธึมเพื่อสร้างลำดับแบบสุ่มหลอกที่จำลองการแจกแจงความน่าจะเป็นต่างๆ ตัวเลขสุ่มหลอกหมายถึงตัวเลขสุ่มที่สร้างโดยสูตรการเรียกซ้ำทางคณิตศาสตร์ จากมุมมองเชิงปฏิบัติ วิธีที่ง่ายที่สุดและเป็นธรรมชาติที่สุดในการรับตัวเลขดังกล่าวคือการใช้เครื่องสร้างตัวเลขสุ่มที่จัดทำโดยไลบรารีภาษาคอมพิวเตอร์ สภาพแวดล้อมการพัฒนาที่แตกต่างกันมีฟังก์ชันและวิธีการสร้างตัวเลขสุ่มที่แตกต่างกัน โดยทั่วไปแล้วจะส่งออกตัวแปรสุ่มเทียมซึ่งค่าจะกระจายอย่างสม่ำเสมอระหว่าง 0 ถึง 1
เครื่องสร้างตัวเลขสุ่มเป็น
วิธีการสร้างตัวเลขสุ่มในคอมพิวเตอร์ ซึ่งมักใช้สูตรต่อไปนี้:
โปรแกรมที่ใช้สูตรนี้เพื่อสร้างลำดับตัวเลขสุ่ม a1, a2,... จาก 0 ถึง 65536 เรียกว่าเครื่องกำเนิดตัวเลขสุ่มฮาร์มอนิกทวีคูณ 232 ขั้นตอน ในหมู่พวกเขา b, c และ d เป็นจำนวนเต็มบวก และ d เรียกว่าเมล็ดของลำดับสุ่มที่สร้างโดยสูตร
จากสูตรนี้จะเห็นได้ว่าเมื่อกำหนดพารามิเตอร์ b, c และ d แล้ว ลำดับสุ่มที่สร้างขึ้นก็จะถูกกำหนดด้วย ลำดับนี้ที่ตอบสนองการสุ่มได้ในระดับหนึ่งเท่านั้นเรียกว่าตัวเลขสุ่มหลอก
ด้านล่างนี้เป็นตัวอย่างของเครื่องกำเนิดตัวเลขสุ่ม ในหมู่พวกเขา ฟังก์ชัน Random_seed อนุญาตให้ผู้ใช้เลือกค่าเริ่มต้นของตัวเลขสุ่ม เมื่อพารามิเตอร์อย่างเป็นทางการ d=0 เวลาปัจจุบันของระบบจะถูกใช้เป็นค่าเริ่มต้นของตัวเลขสุ่ม เมื่อ d≠0, d จะถูกเลือกเป็น ฟังก์ชันการสุ่มจะขึ้นอยู่กับเมล็ดพันธุ์ที่กำหนด คำนวณเมล็ดพันธุ์ใหม่และสร้างตัวเลขสุ่มใหม่ในช่วงต่ำ~สูง
#กำหนดตัวคูณ 0x015A4E35L
#define เพิ่มขึ้น 1
โมฆะ Random_seed (d ยาวที่ไม่ได้ลงนาม) {
ถ้า (d==0)seed = เวลา (0);
เมล็ดอื่น = d;}
int สุ่มที่ไม่ได้ลงนาม (ต่ำแบบยาวที่ไม่ได้ลงนาม, สูงแบบยาวที่ไม่ได้ลงนาม)
-
เมล็ด = MULTIPLIER * เมล็ด + เพิ่มขึ้น;
ผลตอบแทน ((เมล็ด >>16)% (สูง-ต่ำ) + ต่ำ);
-
}
กลไกการสร้างตัวเลขสุ่มหลอกใน ASP.NET
ทำให้คอมพิวเตอร์ไม่สามารถสร้างตัวเลขสุ่มได้อย่างสมบูรณ์ สิ่งที่เรียกว่าตัวสร้างตัวเลขสุ่มใช้อัลกอริธึมบางอย่างในการดำเนินการที่ซับซ้อนกับเมล็ดสุ่มที่เลือกไว้ล่วงหน้า และใช้ผลลัพธ์ที่สร้างขึ้นเพื่อจำลองตัวเลขสุ่มโดยสมบูรณ์โดยประมาณ ตัวเลขสุ่มหลอกจะถูกเลือกจากชุดตัวเลขที่มีขอบเขตจำกัดซึ่งมีความน่าจะเป็นเท่ากัน ตัวเลขที่เลือกไม่ใช่การสุ่มโดยสมบูรณ์ แต่เป็นการสุ่มเพียงพอสำหรับวัตถุประสงค์ในทางปฏิบัติ
1. ฟังก์ชันในตัวของ VB.NET
โปรแกรม ASP.NET สามารถใช้ภาษาการเขียนโปรแกรมได้หลากหลาย ภาษาการเขียนโปรแกรมเริ่มต้นคือ VB.NET แม้ว่า VB.NET และ VB จะค่อนข้างคล้ายกัน แต่สภาพแวดล้อมของแอปพลิเคชันจะแตกต่างกันและวิธีการเขียน รหัสก็แตกต่างกันเช่นกัน ใน VB.NET หากคุณต้องการใช้ฟังก์ชันทางคณิตศาสตร์ คุณต้องผ่านคลาส Math ที่จัดทำโดย .NET Framework ซึ่งอยู่ใต้เนมสเปซของระบบ ผู้ใช้สามารถเพิ่ม Imports System ที่ด้านบนของโค้ดเพื่อใช้สิ่งเหล่านี้ ฟังก์ชันทางคณิตศาสตร์
ต้นแบบของฟังก์ชันที่ใช้ในการสร้างตัวเลขสุ่มคือ: Rnd(x) ฟังก์ชันนี้ใช้เพื่อสร้างตัวเลขสุ่มที่มีความแม่นยำระดับเดียวระหว่าง 0 ถึง 1 x คือเมล็ดสำหรับสร้างตัวเลขสุ่ม หากคุณต้องการสุ่มเลือกตัวเลขจากช่วง (นาที, สูงสุด) คุณต้องใช้สูตร: หมายเลขสุ่ม = (สูงสุด - นาที) * Rnd(x) + นาที
การเลือกตัวเลขสุ่มหลอกเริ่มต้นจากการสุ่มเมล็ด เพื่อให้แน่ใจว่าตัวเลขสุ่มหลอกที่ได้รับทุกครั้งจะ "สุ่ม" เพียงพอ การเลือกเมล็ดสุ่มจึงมีความสำคัญมาก หากเมล็ดสุ่มที่เลือกเหมือนกัน ลำดับการสุ่มที่สร้างขึ้นก็จะเหมือนกันเช่นกัน โดยทั่วไป พารามิเตอร์ที่เกี่ยวข้องกับเวลาของระบบจะใช้เป็นข้อมูลสุ่ม ซึ่งเป็นวิธีการเริ่มต้นที่ใช้โดยตัวสร้างตัวเลขสุ่มใน .net Framework
2. คลาสตัวเลขสุ่ม System.Random
คลาสตัวเลขสุ่ม คลาส System.Random มีวิธีการต่อไปนี้สำหรับการสร้างตัวเลขสุ่มต่างๆ ที่ตรงตามข้อกำหนดที่แตกต่างกัน ดังแสดงในตารางที่ 1:
ตารางที่ 1 วิธีการต่างๆ ที่ให้ไว้โดยคลาส System.Random
หมายเลขซีเรียล | ชื่อวิธีการ | คำอธิบายฟังก์ชั่น |
1 | ต่อไป() | ส่งกลับจำนวนเต็มระหว่าง 0 ถึง 2147483647 |
2 | ถัดไป(ฉัน) | ส่งกลับจำนวนเต็มระหว่าง 0 ถึง i |
3 | ถัดไป(i,j) | ส่งกลับจำนวนเต็มระหว่าง i~j |
4 | ถัดไปดับเบิล() | ส่งกลับเลขทศนิยมแบบสุ่มระหว่าง 0 ถึง 1 |
5 | ถัดไปดับเบิล (ไบต์ ()) | ใช้จำนวนเต็มสุ่มระหว่าง 0 ถึง 255 เป็นค่าของแต่ละองค์ประกอบของอาร์เรย์ไบต์ |
การใช้คลาสตัวเลขสุ่ม System.Random จะต้องประกาศก่อน ถ้าคุณต้องการใช้เมธอด Nextbytes(byte()) คุณต้องประกาศอาร์เรย์ไบต์ก่อนใช้งานด้วย
3. การเขียนโปรแกรมทดสอบ
จะต้องสร้างสภาพแวดล้อมการพัฒนาและการทำงานก่อนที่จะรันโปรแกรม ASP.NET รวมถึงการกำหนดค่า Microsoft IIS และติดตั้ง .NET Framework SDK และตัวแก้ไข MSE ของเครื่อง โปรแกรมแก้ไข MSE เป็นซอฟต์แวร์เสริมสำหรับ Microsoft Office และสะดวกมากในฐานะเครื่องมือแก้ไขสำหรับ ASP.NET รหัสโปรแกรมทดสอบมีดังนี้:
<script language="vb" runat="server">
sub page_load(send as object,e as eventargs)
สลัว r1 เป็นแบบสุ่ม = สุ่มใหม่ ()
response.write("ผลลัพธ์ของ r1.next()is:"+r1.next().tostring())
response.write("Theresultofr1.next(100)is:" +r1.next(100).tostring())
response.write("ผลลัพธ์ของ r1.next(100,150) คือ:"+r1.next(100,150).tostring())
response.write("ผลลัพธ์ของ r1.nextdouble() คือ:"+r1.nextdouble().tostring())
r1.nextbytes(r) // dim r(300) เป็นไบต์
response.write("r(100) คือ:")
การตอบสนองเขียน (r (199))
end sub </script>
ผลการทดสอบแสดงในรูปที่ 1:
รูปที่ 1 ผลการทดสอบการรันตัวเลขสุ่มหลอก
ตัวอย่าง
การวิเคราะห์ความต้องการแอปพลิเคชันการพัฒนา: สร้างแอปพลิเคชันสำหรับจำลองเกมลูกเต๋า ในเกมนี้ ผู้เล่นจะสุ่มทอยลูกเต๋า ลูกเต๋าแต่ละลูกมีหกด้าน แทนจุดหกจุด 1, 2, 3, 4, 5 และ 6 ตามลำดับ เมื่อแม่พิมพ์หยุด ให้ดูหมายเลขบนพื้นผิวด้านบนของแม่พิมพ์ หากจำนวนการโยนคือ 6 ข้อความที่ชนะจะถูกแจ้ง มิฉะนั้นการโยนจะดำเนินต่อไป
1. เทคโนโลยีหลัก
1.1 แบบฟอร์มการควบคุมเว็บ
แบบฟอร์มการควบคุมเว็บมีคุณสมบัติเชิงวัตถุของภาษาระดับสูง มันเป็นวัตถุของเนมสเปซ System.Web.UI.WebControls ใน ASP.NET กระบวนการประมวลผลคล้ายกับแบบฟอร์มควบคุม HTML โดยมีลักษณะดังต่อไปนี้: แบบฟอร์มทำงานบนฝั่งเซิร์ฟเวอร์ ช่องป้อนข้อมูลเป็นตัวควบคุมทั้งหมด โดยมีคุณสมบัติและวิธีการที่มีประสิทธิภาพและสมบูรณ์ และสามารถเก็บรักษาข้อมูลของช่องป้อนข้อมูลได้ มีความสามารถในการตรวจสอบฟิลด์อินพุต มีตัวควบคุมการแสดงข้อมูล ฯลฯ
รหัสแบบฟอร์มการควบคุมเว็บโดยทั่วไปจะเป็นดังนี้:
<asp: button id="sub3" text="confirm" runat="server"/>
ในบรรดารหัสเหล่านั้น ASP: XXX บ่งชี้ถึงประเภทของการควบคุมเว็บที่เป็นแอตทริบิวต์ ID ที่ระบุ ชื่อประจำตัวของตัวควบคุม ค่าของแอตทริบิวต์ Runat คือเซิร์ฟเวอร์ ซึ่งบ่งชี้ว่านี่คือตัวควบคุมที่ทำงานบนฝั่งเซิร์ฟเวอร์
การควบคุมเว็บที่จะใช้ในตัวอย่างนี้ส่วนใหญ่เป็นปุ่มควบคุม ตัวควบคุมรูปภาพใช้เพื่อแสดงไฟล์รูปภาพและมีคุณลักษณะต่อไปนี้: Imageurl ระบุ URL ของไฟล์รูปภาพ ความกว้าง ความกว้างของการแสดงไฟล์รูปภาพ ความสูง ความสูงของการแสดงไฟล์รูปภาพ ฯลฯ
1.2 การสร้างตัวเลขสุ่มหลอก
ตามคำอธิบายการวิเคราะห์ข้อกำหนด เพื่อจำลองคะแนนที่ได้จากการสุ่มลูกเต๋า จำเป็นต้องสุ่มสร้างจำนวนเต็มตั้งแต่ 1 ถึง 6 ในกรณีนี้ วิธีถัดไป (i, j) ของคลาส System.Random สามารถใช้ โดยที่ i=1, j=7 (ผู้เขียนเขียนโปรแกรมทดสอบแล้วพบว่า ถ้า j=6 ตัวเลขสุ่มที่สร้างขึ้นจะอยู่ระหว่าง 1 ถึง 5)
2. การใช้งานโปรแกรม
รหัสหลักของโปรแกรมมีดังนี้
<script language="vb" runat="server ">
sub disp(obj as object,e as eventargs)
dim r1 as Random =new Random() //กำหนดคลาสตัวเลขสุ่ม
dim file_prefix as string = "Imagesdie"
dim file_suffix as string = ".png"
value = r1 ถัดไป (1,7) // ค่าสลัวเป็นจำนวนเต็ม
s1 = file_prefix + value.tostring() + file_suffix
pic1.imageurl = s1 // อัปเดตแอตทริบิวต์ imageurl ของตัวควบคุมรูปภาพ
ถ้าค่า = 6 แล้ว
disp.text = " คุณชนะ" / /แสดงข้อมูลพร้อมท์
else
disp.text = "ลองอีกครั้ง"
end if
end sub
</script>
<form id="form1" runat="server"><br>
<asp:button id="disp" runat="server " onclick="disp" text="start"/>
<asp:image id="pic1" runat="server" width="50" height="50"/></form>
ผลการรัน ของโปรแกรมดังรูปที่ 2 แสดง:
รูปที่ 2 ผลการรันโปรแกรม
สรุป
ตัวเลขสุ่มหลอกถูกใช้ในหลายตำแหน่งในเว็บแอปพลิเคชัน วิธีการเลือกพารามิเตอร์เริ่มต้นสำหรับสร้างลำดับแบบสุ่ม และอัลกอริทึมสุ่มที่จะใช้เพื่อสร้างลำดับสุ่มหลอกที่มีประสิทธิภาพดีกว่าคือซอฟต์แวร์คอมพิวเตอร์ นักพัฒนา หนึ่งในเป้าหมายที่ติดตาม การใช้คลาสการสร้างตัวเลขสุ่มหลอกที่จัดทำโดยกรอบงาน ASP.NET และวิธีการทำงานที่จัดทำโดยภาษาสคริปต์ VB.NET สามารถสร้างลำดับสุ่มต่างๆ ที่ตรงตามข้อกำหนดที่แตกต่างกันได้ ตัวอย่างเช่น รหัสตรวจสอบแบบสุ่มที่ใช้สำหรับการตรวจสอบตัวตนในระบบเว็บใช้เทคโนโลยีการสร้างตัวเลขแบบสุ่ม มีบทความมากมายในเว็บไซต์นี้ ดังนั้นฉันจะไม่ลงรายละเอียดที่นี่