1. ภาพรวม
ในบทช่วยสอนนี้เราจะสำรวจวิธีต่างๆในการสร้างตัวเลขสุ่มภายในช่วง
2. การสร้างตัวเลขสุ่มในช่วง
2.1. Math.random
Math.randomให้สุ่มคู่ค่าที่มากกว่าหรือเท่ากับ 0.0 และน้อยกว่า 1.0
มาใช้เมธอดMath.randomเพื่อสร้างตัวเลขสุ่มในช่วงที่กำหนด:
public int getRandomNumber(int min, int max) { return (int) ((Math.random() * (max - min)) + min); }
ทำไมถึงได้ผล? มาดูกันว่าจะเกิดอะไรขึ้นเมื่อMath.randomส่งคืน 0.0 ซึ่งเป็นผลลัพธ์ที่ต่ำที่สุดที่เป็นไปได้:
0.0 * (max - min) + min => min
ดังนั้นจำนวนต่ำสุดที่เราจะได้คือmin
หากMath.randomส่งกลับ 1.0 ซึ่งเป็นผลลัพธ์สูงสุดที่เป็นไปได้เราจะได้รับ:
1.0 * (max - min) + min => max - min + min => max
ดังนั้นจำนวนสูงสุดที่เราจะได้คือสูงสุด
มาดูรูปแบบเดียวกันนี้ซ้ำกับRandom # nextIntในส่วนถัดไป
2.2. java.util.Random.nextInt
อินสแตนซ์ของjava.util.Randomสามารถใช้ทำเช่นเดียวกันได้
มาใช้เมธอดjava.util.Random.nextIntเพื่อรับตัวเลขสุ่ม:
public int getRandomNumberUsingNextInt(int min, int max) { Random random = new Random(); return random.nextInt(max - min) + min; }
นาทีพารามิเตอร์ (กำเนิด) รวมในขณะที่สูงสุดที่ผูกพันเป็นพิเศษ
2.3. java.util.Random.ints
java.util.Random.intsวิธีการส่งกลับIntStreamของจำนวนเต็มแบบสุ่ม
ดังนั้นเราสามารถใช้วิธีjava.util.Random.intsและส่งกลับตัวเลขสุ่ม:
public int getRandomNumberUsingInts(int min, int max) { Random random = new Random(); return random.ints(min, max) .findFirst() .getAsInt(); }
ที่นี่เช่นกันขั้นต่ำต้นทางที่ระบุจะรวมอยู่ด้วยและสูงสุดเป็นเอกสิทธิ์
3. สรุป
ในบทความนี้เราได้เห็นวิธีอื่นในการสร้างตัวเลขสุ่มภายในช่วง
ตัวอย่างโค้ดเช่นเคยสามารถพบได้ใน GitHub