หากคุณต้องการเรียนรู้วิธีสร้างตัวเลขและสตริงแบบสุ่มใน Ruby แสดงว่าคุณมาถูกที่แล้ว
เพราะนั่นคือสิ่งที่บทความนี้เป็นเรื่องเกี่ยวกับ!
ด้วยตัวเลขสุ่ม คุณสามารถเลือกองค์ประกอบสุ่มได้ จากอาร์เรย์ เลือกผู้ชนะจากรายการ สร้างทอยลูกเต๋า ฯลฯ
ใน Ruby มีหลายวิธีในการสร้างตัวเลขสุ่มที่มีคุณสมบัติต่างๆ
ตัวอย่างเช่น…
วิธีแรนด์สามารถใช้ได้ 3 วิธี:
- ไม่มีอาร์กิวเมนต์
rand
ให้จุดลอยตัว ตัวเลขระหว่าง 0 ถึง 1 (ชอบ 0.4836732493) - ด้วย จำนวนเต็ม อาร์กิวเมนต์ (
rand(10)
) คุณจะได้จำนวนเต็มใหม่ระหว่าง 0 และตัวเลขนั้น - ด้วย ช่วง อาร์กิวเมนต์ (
rand(1..20)
) คุณจะได้จำนวนเต็มระหว่างจุดเริ่มต้นของช่วงและจุดสิ้นสุดของช่วง
วิธีอื่นๆ ในการสร้างการสุ่มใน Ruby ได้แก่:
- อาร์เรย์#สุ่ม วิธีการ
- The อาร์เรย์#ตัวอย่าง วิธีการ
- The สุ่มปลอดภัย คลาส
มาดูตัวอย่างกัน!
การสร้างตัวเลขสุ่ม
คุณสามารถสร้างตัวเลขสุ่มทับทิมโดยใช้ แรนด์ วิธีการ:
Rand สร้างตัวเลขทศนิยม (0.4836732493
) หากถูกเรียกโดยไม่มีข้อโต้แย้งใดๆ
คุณส่งอาร์กิวเมนต์ไปที่ rand
. ได้ เพื่อสร้างตัวเลขเริ่มต้นจากศูนย์ถึง (แต่ ไม่รวม ) หมายเลขนั้น
rand 100 > 41
การสร้างตัวเลขสุ่มทับทิมนั้นง่ายมาก แต่ถ้าคุณต้องการให้ตัวเลขอยู่ในช่วงเฉพาะแทนที่จะเริ่มจากศูนย์ล่ะ
ไม่มีปัญหา!
คุณสามารถใช้ช่วงเพื่อให้ได้สิ่งที่คุณต้องการได้อย่างแท้จริง
ตัวอย่าง :
rand 200..500 > 352
การรักษาความปลอดภัยหมายเลขสุ่มทับทิม
ตัวเลขที่สร้างโดย rand อาจเพียงพอสำหรับแอปพลิเคชันง่ายๆ…
…แต่ถ้าคุณต้องการใช้เพื่อความปลอดภัย เช่น การสร้างโทเค็นการรีเซ็ตรหัสผ่าน คุณควรใช้ SecureRandom ซึ่งเป็นส่วนหนึ่งของไลบรารีมาตรฐาน Ruby
SecureRandom เริ่มสร้างตัวสร้างจาก /dev/urandom บนระบบ Unix และบน windows ใช้ CryptAcquireContext / CryptGenRandom API
นี่คือตัวอย่าง :
require 'securerandom' SecureRandom.random_number > 0.232
อย่างที่คุณเห็นมันใช้งานได้เหมือน rand
คุณยังสามารถส่งต่อในจำนวนสูงสุดได้อีกด้วย
ตัวอย่าง :
SecureRandom.random_number(100) > 72
สุ่มปลอดภัย มีรูปแบบเอาต์พุตอื่นที่พร้อมใช้งาน
การใช้ hex
สามารถสร้างสตริงความกว้างคงที่ฐานสิบหกได้
SecureRandom.hex > "87694e9e5231abca6de39c58cdfbe307"
Ruby 2.5 นำเสนอวิธีการใหม่ ซึ่งสร้างสตริงตัวอักษรและตัวเลขแบบสุ่ม:
SecureRandom.alphanumeric > "PSNVXOeDpnFikJPC"
วิธีการเลือกองค์ประกอบแบบสุ่มจากอาร์เรย์
ตอนนี้:
คุณอาจต้องการ สุ่มเลือกจากรายการ .
คุณสามารถลองสิ่งนี้:
[5, 15, 30, 60].shuffle.first > 30
แต่ Ruby มี ตัวอย่าง วิธีที่เหมาะสมกว่า (และเร็วกว่า) สำหรับงานนี้:
[5, 15, 30, 60].sample > 5
คุณสามารถใช้ตัวอย่าง สำหรับช่วง รหัสนี้จะสร้างตัวอักษรแบบสุ่ม:
('a'..'z').to_a.sample > b
คุณสามารถส่งอาร์กิวเมนต์จำนวนเต็มไปยังตัวอย่างเพื่อรับ N องค์ประกอบที่ไม่ซ้ำ จากอาร์เรย์:
[1,2,3].sample(2) > [1, 2]
นอกจากนี้ยังสามารถส่งผ่านตัวสร้างแบบสุ่มที่กำหนดเองเป็นอาร์กิวเมนต์:
[1,2,3].sample(random: SecureRandom)
ทับทิมสุ่มสตริง
แอปพลิเคชั่นสุ่มขั้นสุดยอดคือการสร้างสตริงสุ่มด้วยชุดอักขระที่กำหนดเอง นี่คือรหัส:
def generate_code(number) charset = Array('A'..'Z') + Array('a'..'z') Array.new(number) { charset.sample }.join end puts generate_code(20)
มีบางอย่างเกิดขึ้นที่นี่
ขั้นแรก เราเตรียมชุดอักขระของเราโดยใช้ช่วงและแปลงเป็นอาร์เรย์ จากนั้นเราก็ใช้ประโยชน์จากการโทร Array.new
ด้วยบล็อก ซึ่งช่วยให้เราเริ่มต้น อาร์เรย์ขนาด n ด้วยค่าที่สร้างโดยบล็อก
รหัสนี้จะสร้างสตริงในรูปแบบต่อไปนี้: TufwGfXZskHlPcYrLNKg
.
คุณสามารถปรับแต่งชุดตัวละครให้เหมาะกับความต้องการของคุณได้
การเพาะตัวสร้างตัวเลขสุ่ม
หากคุณต้องการควบคุมว่าตัวเลขใดถูกสร้างขึ้นเมื่อใช้วิธีการเช่น rand
จากนั้นคุณสามารถตั้งเมล็ดพันธุ์ได้
เมล็ดอะไรคะ
เมล็ดคือตัวเลขที่เริ่มลำดับของตัวเลขสุ่ม
ตัวเลขที่สร้างขึ้นทั้งหมด มาจากเมล็ดพันธุ์นี้ .
นั่นเป็นเหตุผลว่าทำไมคุณภาพของเมล็ดพืชจึงเป็นกุญแจสำคัญในการสร้างลำดับตัวเลขสุ่มที่ดี
Ruby จัดการให้คุณแล้ว (ใช้ SecureRandom
หากคุณต้องการความปลอดภัยเพิ่มเติม) แต่ในบางสถานการณ์ (ส่วนใหญ่เป็นการทดสอบและการดีบัก) คุณอาจต้องตั้งค่าเมล็ดพันธุ์นี้ด้วยตัวเอง
คุณสามารถทำได้ด้วย srand
วิธีการ
ถูกใจสิ่งนี้ :
Kernel.srand(1)
ด้วยเมล็ดพันธุ์นี้ คุณจะรู้ได้อย่างชัดเจนว่าตัวสร้างจะให้ตัวเลขอะไรกับคุณ
สำหรับหมายเลข 1 เป็นเมล็ดพันธุ์ :
Array.new(5) { rand(1..10) } # [6, 9, 10, 6, 1]
หากคุณตั้งค่าเมล็ดอีกครั้งเป็น 1 ลำดับจะเริ่มที่ 6 จากนั้น 9, 10 เป็นต้น
บทสรุป
แค่นั้นแหละ! ตอนนี้คุณพร้อมที่จะเริ่มใช้การสุ่มในโปรแกรม Ruby แล้ว 🙂
พบว่าโพสต์นี้มีประโยชน์หรือไม่
แบ่งปันกับเพื่อนของคุณและ สมัครรับจดหมายข่าวของฉัน เพื่อให้คุณไม่พลาดสิ่งใหม่ๆ!