1. วิธีการสร้างตัวเลขสุ่มใน Java
1. ใช้ math.random () ใน J2SE เพื่อให้ระบบสุ่มเลือกทศนิยมสองประเภทระหว่าง 0 และ 1 คูณด้วยตัวเลขเช่น 25 และคุณสามารถรับหมายเลขสุ่มในช่วง 0 และ 25 สิ่งนี้ไม่สามารถใช้ได้ใน J2ME;
int randomNumber = (int) math.round (math.random ()*(max-min)+min);
2. มีวิธี CurrentTimeMillis () ในคลาสระบบ วิธีนี้ส่งคืนหมายเลขมิลลิวินาทีที่ยาวนานตั้งแต่เวลา 0:00 น. ของวันที่ 1 มกราคม 1970 ถึงหมายเลขปัจจุบัน มันสามารถใช้เป็นหมายเลขสุ่มและสามารถเป็นโมดูโลกับตัวเลขที่แน่นอนซึ่งสามารถ จำกัด ช่วงของตัวเลขสุ่ม เมื่อวิธีนี้สร้างตัวเลขสุ่มหลายตัวในเวลาเดียวกันในลูปมันจะเป็นค่าเดียวกันซึ่งมีข้อ จำกัด บางประการ!
long randomNum = system.currentTimeMillis (); int randomNumber = (int) randomNum%(max-min)+min;
3. ใช้คลาส java.util.random เพื่อสร้างเครื่องกำเนิดตัวเลขแบบสุ่มซึ่งเป็นวิธีที่เรามักจะใช้เพื่อรับตัวเลขสุ่มในโปรแกรม J2ME มันมีสองรูปแบบของตัวสร้างคือสุ่ม () และสุ่ม (เมล็ดยาว) Random () ใช้เวลาปัจจุบัน System.currentTimeMillis () เป็นเมล็ดของเครื่องกำเนิดไฟฟ้าและสุ่ม (เมล็ดยาว) ใช้เมล็ดที่ระบุเป็นเมล็ดของเครื่องกำเนิดไฟฟ้า หลังจากสร้างวัตถุแบบสุ่ม (สุ่ม) ตัวสร้างตัวเลขแบบสุ่มประเภทต่าง ๆ โดยการเรียกใช้วิธีการที่แตกต่างกัน: nextint (), nextlong (), nextfloat (), nextdouble () ฯลฯ หากวัตถุสุ่มสองชิ้นใช้เมล็ดเดียวกัน (ตัวอย่างเช่น 25) และเรียกฟังก์ชันเดียวกันในลำดับเดียวกัน
สุ่มสุ่ม = ใหม่สุ่ม (); int randomNumber = random.nextint (สูงสุด)%(Max-min + 1) + min;
2. n ตัวเลขที่ไม่ซ้ำกันภายในช่วงสุ่มที่กำหนด
1. วิธีที่ 1: ง่ายที่สุดและง่ายที่สุดที่จะเข้าใจสองรอบเพื่อกำจัดน้ำหนักหนัก
/ *** สุ่มระบุตัวเลขที่ไม่ซ้ำกันในช่วง* วิธีที่ง่ายที่สุดและพื้นฐานที่สุด* @param ขั้นต่ำระบุช่วงต่ำสุด* @param สูงสุดระบุช่วงสูงสุด* @param n จำนวนของตัวเลขสุ่ม*/ int คงที่สาธารณะ } int [] result = new int [n]; จำนวน int = 0; ในขณะที่ (นับ <n) {int num = (int) (math.random () * (สูงสุด - นาที)) + นาที; ธงบูลีน = จริง; สำหรับ (int j = 0; j <n; j ++) {ถ้า (num == ผลลัพธ์ [j]) {flag = false; หยุดพัก; }} if (Flag) {ผลลัพธ์ [count] = num; นับ ++; }} ผลการส่งคืน; - 2. วิธีที่ 2: การใช้คุณสมบัติของ HashSet สามารถเก็บค่าที่แตกต่างกันได้เท่านั้น
/ *** สุ่มระบุตัวเลขที่ไม่ใช่ซ้ำในช่วง* การใช้คุณสมบัติ HashSet สามารถเก็บค่าที่แตกต่างกันได้เท่านั้น* @param min ระบุค่าต่ำสุดของช่วง* @param max ระบุค่าสูงสุดของช่วง* @param n number* @param hashset <จำนวนเต็ม> ชุดหมายเลขสุ่ม if (n> (สูงสุด - min + 1) || สูงสุด <นาที) {return; } สำหรับ (int i = 0; i <n; i ++) {// เรียก math.random () เมธอด int int num = (int) (math.random () * (สูงสุด - นาที))+นาที; set.add (num); // บันทึกตัวเลขที่แตกต่างกันลงใน HashSet} int setSize = set.size (); // หากหมายเลขที่เก็บไว้น้อยกว่าจำนวนที่ระบุให้สร้างจำนวนสุ่มของจำนวนที่เหลืออีกครั้งและลูปเพื่อให้ถึงขนาดที่ระบุหาก (setsize <n) {randomset (min, max, n - setsize, set); // recursive}}}}}} 3. วิธีที่ 3: ไม่รวมตัวเลขที่มาถึงแบบสุ่ม
/*** ระบุตัวเลขที่ไม่ซ้ำกัน N แบบสุ่มในช่วง* ในอาร์เรย์ที่ไม่ได้เริ่มต้นที่ไม่ได้เริ่มต้นตัวเลขจะถูกสร้างแบบสุ่มและใส่ลงในผลลัพธ์ * แทนที่หมายเลขที่ถูกส่งแบบสุ่มไปยังอาร์เรย์ที่จะเลือกโดยหมายเลขที่สอดคล้องกับตัวห้อยของอาร์เรย์ที่จะเลือก (LEN-1)* จากนั้นสุ่มสร้างหมายเลขสุ่มถัดไปจาก LEN-2 และอื่น ๆ ขั้นต่ำ, int max, int n) {int len = max-min+1; if (สูงสุด <นาที || n> len) {return null; } // เริ่มต้นอาร์เรย์ที่จะเลือกสำหรับช่วงที่กำหนด int [] source = new int [len]; สำหรับ (int i = min; i <min+len; i ++) {source [i-min] = i; } int [] result = new int [n]; สุ่ม RD = ใหม่สุ่ม (); ดัชนี int = 0; สำหรับ (int i = 0; i <result.length; i ++) {// อาร์เรย์ที่จะเลือก 0 ถึง (len-2) ดัชนีสุ่ม = math.abs (rd.nextint () % len--); // ใส่หมายเลขสุ่มลงในผลลัพธ์ชุดผลลัพธ์ [i] = แหล่งที่มา [ดัชนี]; // แทนที่หมายเลขที่ได้รับแบบสุ่มในอาร์เรย์ที่จะเลือกด้วยหมายเลขที่สอดคล้องกับตัวห้อยของอาร์เรย์ที่จะเลือก (LEN-1) ด้วยหมายเลขที่สอดคล้องกับตัวห้อยของอาร์เรย์ที่จะเลือก (LEN-1) แหล่งที่มา [ดัชนี] = แหล่งที่มา [len]; } ผลตอบแทนผลลัพธ์; - อินสแตนซ์การโทร:
โมฆะคงที่สาธารณะหลัก (String [] args) {int [] result1 = randomcommon (20,50,10); สำหรับ (int i: result1) {system.out.println (i); } int [] result2 = randomArray (20,50,10); สำหรับ (int i: result2) {system.out.println (i); } hashset <integer> set = new hashset <teger> (); สุ่มตั้ง (20,50,10, ชุด); สำหรับ (int j: set) {system.out.println (j); }}3. รหัสตัวอย่าง
การทดสอบแพ็คเกจ; นำเข้า java.util.hashset; นำเข้า java.util.random; ตัวอย่างคลาสสาธารณะ { /*** สุ่มระบุหมายเลข non-repetition n แบบสุ่มในช่วง* ในอาร์เรย์ที่ไม่ได้รับการเริ่มต้นที่ไม่ได้เริ่มต้น (LEN-1)* จากนั้นสุ่มสร้างหมายเลขสุ่มถัดไปจาก LEN-2 และอื่น ๆ* @param max ระบุช่วงสูงสุด* @param min ระบุช่วงต่ำสุด* @param n จำนวนสุ่มตัวเลข* @return int [] หมายเลขสุ่มชุด*/ สาธารณะ if (สูงสุด <นาที || n> len) {return null; } // เริ่มต้นอาร์เรย์ที่จะเลือกสำหรับช่วงที่กำหนด int [] source = new int [len]; สำหรับ (int i = min; i <min+len; i ++) {source [i-min] = i; } int [] result = new int [n]; สุ่ม RD = ใหม่สุ่ม (); ดัชนี int = 0; สำหรับ (int i = 0; i <result.length; i ++) {// อาร์เรย์ที่จะเลือก 0 ถึง (len-2) ตัวห้อยสุ่ม int s = rd.nextint ()%len; // system.out.print (s-- +","); index = math.abs (rd.nextint ()%len-); // system.out.println (ดัชนี); // ใส่หมายเลขที่ได้รับแบบสุ่มลงในผลลัพธ์ชุดผลลัพธ์ [i] = แหล่งที่มา [ดัชนี]; // แทนที่หมายเลขที่ได้รับแบบสุ่มในอาร์เรย์ที่จะเลือกด้วยจำนวนที่สอดคล้องกันของตัวห้อยของอาร์เรย์ที่จะเลือก (LEN-1) แหล่งที่มา [ดัชนี] = แหล่งที่มา [LEN]; } ผลตอบแทนผลลัพธ์; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// int [] result1 = randomcommon (20,50,10); // สำหรับ (int i: result1) {// system.out.println (i); //} int [] result2 = randomArray (0,4,5); สำหรับ (int i: result2) {system.out.print (i); } // hashset <integer> set = new hashset <integer> (); // randomset (20,50,10, set); // สำหรับ (int j: set) {// system.out.println (j); //}}}}}}}ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์สำหรับทุกคนในการเรียนรู้การเขียนโปรแกรม Java