คลาส java.util.Random ใน Java คืออะไร
คลาสjava.util.Randomใช้เพื่อสร้างตัวเลขหลอกเทียม เมธอดที่ใช้โดยคลาสนี้ใช้เพื่อสร้างประเภทข้อมูลสุ่มต่างๆ เช่น int, double และ float ดังนั้นจึงมีตัวเลขสุ่มสองประเภทใหญ่ๆ คือ ตัวเลขสุ่มเชิงสถิติและตัวเลขสุ่มเทียม ตัวเลขสุ่มทางสถิติ (เช่น ตัวเลขสุ่มอย่างง่ายในวิชาคณิตศาสตร์) คือชุดของค่าที่ไม่มีรูปแบบที่จดจำได้ ตัวอย่างเช่น การทอยลูกเต๋า 10 ครั้งจะสร้างตัวเลขสุ่มในแต่ละครั้งที่ไม่มีรูปแบบที่จดจำได้Pseudo Random Numbers คืออะไร?
เป็นชุดของค่าที่สุ่มทางสถิติ แต่มีจุดเริ่มต้น ที่ ทราบ ใน Java แต่ละหมายเลขเทียมถูกสร้างขึ้นผ่านอัลกอริทึม โดยทั่วไปแล้ววงจรจะเกิดขึ้นซ้ำทุกครั้งที่java.util.Randomสร้างตัวเลขสุ่ม ตัวสร้างตัวเลขสุ่มใน Java จะสร้างตัวเลขสุ่มทางสถิติแต่มีจุดเริ่มต้นที่ทราบ ซึ่งสร้างโดยอัลกอริทึม นั่นทำให้ค่าเหล่านั้นเป็นค่าสุ่มjava.util.Random class Cryptographically ไม่ปลอดภัยหรือไม่
มันไม่ปลอดภัยในการเข้ารหัสเพราะมีอัลกอริธึมที่ใช้สำหรับสร้างตัวเลขสุ่ม อันเป็นผลมาจากการที่ผู้ที่รู้วิธีการทำงานของอัลกอริทึมจะไม่ใช้เวลามากในการเข้าถึงข้อมูลที่ละเอียดอ่อนของคุณ ดังนั้น หากคุณกำลังทำงานกับแอปพลิเคชันความปลอดภัยบางอย่าง จำเป็นต้องรักษาความปลอดภัยข้อมูลที่ละเอียดอ่อนบางอย่าง หรือจำเป็นต้องสร้างรหัสผ่านแบบสุ่ม คุณควรหลีกเลี่ยงการใช้คลาสนี้ มันมีประโยชน์ในหลายกรณี เช่น การสร้างตัวเลขสุ่มสำหรับการทอยลูกเต๋าของคุณในเกมลูโด การพนัน การโยนเพื่อการแข่งขัน หรือพื้นที่อื่น ๆ ที่ผลลัพธ์ที่คุณต้องการนั้นคาดเดาไม่ได้การประกาศวิธีการ
สำหรับการใช้วิธีการของคลาสนี้ คุณต้องนำเข้าจากแพ็คเกจก่อนเป็นimport java.util.Random;
หลังจากนำเข้าคุณต้องสร้างวัตถุของคลาสนี้
Random randomNumbers = new Random();
ต่อไป มาดูตัวอย่างต่างๆ ในการใช้คลาส java.util.Random
ตัวอย่าง
import java.util.Random;
public class RandomClassExample1 {
public static void main(String[] args) {
// create random object
Random randomNumbers = new Random();
System.out.println("----------Random Boolean---------" );
/*
* Returns the next pseudo random boolean value which
* may be used in a toss for a match
*/
boolean value = randomNumbers.nextBoolean();
System.out.println("The random boolean value is: " + value);
/*
* Returns the next pseudo random integer value between 0 and 5
* because if we use '6' then, it will give random numbers from 0 to 6
* hence incrementing it by 1 you can use it as a result of a dice roll
*/
System.out.println("\n----------Random Integer---------" );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
// return the next pseudo random long value
Long val = randomNumbers.nextLong();
System.out.println("\n----------Random Long---------" );
System.out.println("Random Long value: " + val);
/*
* Generates random bytes and puts them in an array, which you can for some
* desired unpredictable result that is summing all the values in the array
*/
System.out.println("\n----------Random Bytes---------" );
byte[] bytes = new byte[8];
randomNumbers.nextBytes(bytes);
System.out.print("These are the random bytes = [ ");
for (int i = 0; i < bytes.length; i++) {
System.out.printf("%d ", bytes[i]);
}
System.out.println("]");
}
}
เอาต์พุต
----------บูลีนแบบสุ่ม--------- ค่าบูลีนแบบสุ่มคือ: จริง ----------จำนวนเต็มสุ่ม--------- Die ม้วน: 4 ม้วน: 6 ม้วน: 1 ม้วน: 1 ม้วน: 3 ---------- สุ่มยาว --------- ค่ายาวสุ่ม: -6029959293504570824 ---- ------ ไบต์สุ่ม --------- นี่คือไบต์สุ่ม = [ -37 90 -98 -70 23 -111 19 108 ]
วิธีการ
ตอนนี้เราจะพูดถึงวิธีการบางอย่างในคลาสนี้ โปรดทราบว่า RandomNumbers เป็นวัตถุหรืออินสแตนซ์ของคลาสของเรา-
สองเท่า () :
เมธอดนี้ส่งคืนชุดค่าคู่ที่สร้างขึ้นแบบสุ่มแบบไม่สิ้นสุด ทีนี้มาดูวิธีใช้วิธีนี้กัน
randomNumbers.doubles();
-
ints() :
เมธอดนี้ส่งคืนชุดค่าจำนวนเต็มที่สร้างขึ้นแบบสุ่มแบบไม่สิ้นสุด คุณสามารถใช้สคริปต์ต่อไปนี้เพื่อเรียกวิธีนี้
randomNumbers.ints();
-
ยาว () :
เมธอดนี้ส่งคืนชุดค่ายาวที่สร้างขึ้นแบบสุ่มแบบไม่สิ้นสุด สคริปต์ต่อไปนี้ใช้เพื่อเรียกเมธอดนี้
randomNumbers.longs();
-
บูลีนถัดไป () :
เมธอดนี้ส่งคืนค่าบูลีนหลอกเทียมที่กระจายอย่างสม่ำเสมอถัดไปจากลำดับตัวสร้างตัวเลขสุ่ม การแจกแจงแบบสม่ำเสมอเป็นรูปสี่เหลี่ยมผืนผ้า หมายความว่าทุกค่าในการแจกแจงมีความน่าจะเป็นเท่ากัน นี่คือวิธีใช้วิธีนี้
randomNumbers.nextBoolean();
-
nextInt(int n) :
เมธอดนี้ส่งคืนค่าจำนวนเต็มเทียมเทียมที่กระจายอย่างสม่ำเสมอถัดไปจากลำดับตัวสร้างตัวเลขสุ่มระหว่างค่ารวม 0 และค่าที่ให้ไว้แต่เพียงผู้เดียว ดูวิธีใช้วิธีนี้อย่างรวดเร็ว
randomNumbers.nextInt(10);