ฟังก์ชัน RND() เป็นฟังก์ชันที่สำคัญมาก หากคุณต้องการสร้างคำทักทายแบบสุ่ม การสุ่มวันที่ หรือแม้แต่เกม คุณจะต้องใช้ฟังก์ชันนี้
ฟังก์ชัน ASP rnd()
ฟังก์ชัน rnd() ส่งกลับตัวเลขสุ่มระหว่าง 0 ถึง 1
วิธีใช้:
คัดลอกรหัสรหัสดังต่อไปนี้:
response.write rnd() 'ค่าส่งคืนที่เป็นไปได้: 0.2357746
หากคุณต้องการใช้ฟังก์ชัน rnd() เพื่อส่งคืนจำนวนเต็มภายในช่วงที่กำหนด เช่น ตัวเลขที่มากกว่าหรือเท่ากับ 0 และน้อยกว่าหรือเท่ากับขอบเขตบนของจำนวนเต็มเฉพาะ คุณสามารถใช้วิธีต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
response.write int((บน+1)*rnd)
ตัวอย่างเช่น คำสั่งต่อไปนี้จะส่งคืนจำนวนเต็มระหว่าง 0 ถึง 5 ซึ่งรวมถึง:
คัดลอกรหัสรหัสดังต่อไปนี้:
ตอบกลับเขียน int((5+1)*rnd)
หากคุณต้องการได้รับตัวเลขสุ่มภายในช่วงหนึ่งที่มีขอบเขตล่างมากกว่า 0 คุณสามารถใช้วิธีต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
response.write int ((บน-ล่าง+1)*rnd+ล่าง)
ตัวอย่างเช่น สคริปต์ต่อไปนี้สร้างจำนวนเต็มระหว่าง 50 ถึง 75 รวม:
คัดลอกรหัสรหัสดังต่อไปนี้:
การตอบสนองเขียน int ((75-50+1)*rnd+50)
อย่างไรก็ตาม เกิดปัญหาขึ้น ตัวเลขสุ่มจะถูกสร้างขึ้น แต่เป็นตัวเลขสุ่มเดียวกันทุกครั้ง นี่อาจทำให้คุณสับสนมาก มีข้อความพิเศษที่สามารถช่วยแก้ปัญหานี้ได้ และนั่นคือข้อความแบบสุ่ม
คำสั่ง Randomize ใช้เพื่อบังคับให้ฟังก์ชัน rnd ใช้ลำดับตัวเลขสุ่มใหม่ คำสั่ง Randomize ให้ค่าเริ่มต้นใหม่แก่ฟังก์ชัน rnd ผ่านทางตัวจับเวลาระบบของคอมพิวเตอร์
ฟังก์ชัน RND() เป็นฟังก์ชันที่สำคัญมาก หากคุณต้องการสร้างคำทักทายแบบสุ่ม การสุ่มบอกวันที่ หรือแม้แต่เกม คุณจะต้องใช้ฟังก์ชันนี้
ฟังก์ชัน RND() ส่งคืนตัวเลขสุ่มระหว่าง 0 ถึง 1 นี่คือตัวอย่างของฟังก์ชันนี้และค่าที่ส่งคืนที่เป็นไปได้:
<%=รนดี()%>
0.7055643
โดยทั่วไปแล้ว คุณสนใจที่จะใช้ฟังก์ชันนี้เพื่อส่งกลับจำนวนเต็มภายในช่วงที่กำหนดมากกว่า หากต้องการส่งคืนตัวเลขที่มากกว่าหรือเท่ากับ 0 แต่น้อยกว่าจำนวนเต็มที่ระบุ คุณสามารถใช้คำสั่งต่อไปนี้:
<%=INT((บน+1)*RND)%>
แทนที่นิพจน์ขอบเขตบนด้วยตัวเลขสุ่มที่ใหญ่ที่สุดที่คุณต้องการสร้าง ตัวอย่างเช่น สคริปต์ต่อไปนี้ส่งคืนตัวเลขระหว่าง 0 ถึง 5 ซึ่งรวมถึง:
<%=INT(5+1)*RND)%>
หากคุณต้องการสร้างตัวเลขสุ่มภายในช่วงที่มีขอบเขตล่างมากกว่า 0 คุณสามารถใช้สคริปต์ต่อไปนี้:
<%=INT((บน – ล่าง + 1)*RND+ล่าง)%>
ตัวอย่างเช่น สคริปต์ต่อไปนี้สร้างตัวเลขสุ่มระหว่าง 50 ถึง 75 (รวม):
<%=INT((75-50+1)*RND+50)%>
อาจทำให้คุณประหลาดใจที่เมื่อใดก็ตามที่คุณใช้ฟังก์ชัน RND() ฟังก์ชันนี้จะส่งคืนตัวเลขสุ่มที่เหมือนกันในลำดับเดียวกัน ลองพิจารณาตัวอย่างต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
-
Pick_Greeting=INT((2+1)*RND)
เลือกกรณี เลือก_ทักทาย
กรณีที่ 0
คำทักทาย =”ยินดีต้อนรับ!”
กรณีที่ 1
คำทักทาย =”สวัสดี!”
กรณีที่ 2
คำทักทาย =”ดีใจที่ได้พบคุณ!”
สิ้นสุดการเลือก
-
<%=คำทักทาย%>
สคริปต์นี้สร้างและพิมพ์คำทักทายแบบสุ่ม อย่างไรก็ตาม อาจเป็นไปได้ว่ามันไม่ได้ผลอย่างที่คุณจินตนาการ เมื่อใดก็ตามที่มีคนดาวน์โหลดหน้าเว็บที่มีสคริปต์นี้ คำทักทายเดียวกันนั้นจะถูกพิมพ์ออกมา หากมีใครกลับมาที่หน้านี้หลายครั้ง เขาหรือเธอจะได้รับคำทักทายเดียวกัน ตัวเลขสุ่มจะถูกสร้างขึ้น แต่เป็นตัวเลขสุ่มที่เหมือนกันทุกครั้ง
มีข้อความพิเศษที่ช่วยแก้ไขปัญหานี้ คำสั่ง RANDOMIZE ใช้เพื่อบังคับให้ฟังก์ชัน RND() ใช้ลำดับตัวเลขสุ่มใหม่ คำสั่ง RANDOMIZE จัดเตรียมค่าเริ่มต้นใหม่ให้กับฟังก์ชัน RND() ผ่านทางตัวจับเวลาระบบของคอมพิวเตอร์ ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขตัวอย่างข้างต้นเพื่อให้ทำงานได้อย่างถูกต้อง:
คัดลอกรหัสรหัสดังต่อไปนี้:
-
สุ่ม
Pick_Greeting=INT((2+1)*RND)
เลือกกรณี เลือก_ทักทาย
กรณีที่ 0
คำทักทาย =”ยินดีต้อนรับ!”
กรณีที่ 1
คำทักทาย =”สวัสดี!”
กรณีที่ 2
คำทักทาย =”ดีใจที่ได้พบคุณ!”
สิ้นสุดการเลือก
-
<%=คำทักทาย%>
สคริปต์นี้ทำงานได้อย่างถูกต้อง แต่ละครั้งที่สคริปต์นี้ถูกเรียกใช้งาน คำทักทายแบบสุ่มใหม่จะถูกสร้างขึ้น คำสั่ง RANDOMIZE บังคับให้ฟังก์ชัน RND() ใช้ลำดับใหม่ของตัวเลขสุ่ม
สุดท้ายนี้ หากคุณสงสัยเกี่ยวกับการแจกแจงค่าที่สร้างโดยฟังก์ชัน RND() คุณสามารถตรวจสอบได้ด้วยสคริปต์ต่อไปนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
-
CONST บน=9,การวนซ้ำ=100
REDIM DIST(บน)
สุ่ม
FOR i=1 ถึงการวนซ้ำ
rnd_num=INT((บน+1)*RND)
DIST(rnd_num)=DIST(rnd_num)&”#”
ต่อไป
FOR i=0 ถึงขอบเขตบน
-
<%=i&” : “&DIST(i)%><BR>
-
ต่อไป
-
สคริปต์นี้สร้างตัวเลขสุ่ม 100 ตัวระหว่าง 0 ถึง 9 ติดตามจำนวนตัวเลขสุ่มที่สร้างขึ้นสำหรับแต่ละค่า สุดท้ายจะพิมพ์แผนภูมิแท่งที่แสดงถึงผลลัพธ์