Rumah  >  Artikel  >  Java  >  Apakah cara untuk mencipta nombor rawak dalam Java?

Apakah cara untuk mencipta nombor rawak dalam Java?

WBOY
WBOYke hadapan
2023-05-01 14:52:151181semak imbas

    Kali pertama saya berhubung dengan nombor rawak menggunakan rand() dalam bahasa C; tetapi apabila saya melaksanakannya semula, saya akan dapati itu, eh, itu sebenarnya sama dengan pelaksanaan terakhir Hasilnya adalah sama Kerana tidak ada benih yang dimulakan, sistem menggunakan benih bersatu Pada masa ini, nombor rawak yang dihasilkan akan sama setiap kali, srand(. ); penjana nombor rawak ini akan digunakan , berikan benih kepada masa semasa, iaitu, srand((unsigned) time (&t));

    Nombor rawak bahasa C

    #include <stdio.h>
    
    int main(void) {
    
    	int left,right;
    	printf("请输入一个数:");
    	scanf_s("%d%d",&left,&right);
    	//srand((unsigned)time(NULL));
    	//for(int i = 0; i<10; i++)
    	//printf("%d\n",rand() % one);
    	
    
    	//改进
    	for (int i = 0; i < 10; i++)
    	printf("随机值如下:%d\n", srandNext(left, right));
    
    	return 0;
    }
    
    /********************************************************************************
    * @Function: srandNext
    * @Description:Find a random integer from min to max
    * @Author: caiziqi
    * @Version: 1.1
    * @formal parameter:min : is the minimum value of the value range of this random number function, max: is the maximum value range of this random number function
    * @Date: 2022-7-26
    * @Return : returns a random integer
    ********************************************************************************/
    
    int srandNext(int max,int min) {
    
    	//To prevent users from passing parameters incorrectly
    	if (max <= min) {
    		if (max == min) {
    			return max;
    		}
    		int temp = max;
    		max = min;
    		min = temp;
    	}
    
    	unsigned int static seed = 0;
    	seed++;
    
    	srand((unsigned)time(NULL) + seed * seed);
    
    	return rand() % (max - min + 1) + min;
    }

    Sudah tentu ini bukan Perkara yang paling penting hari ini ialah bercakap tentang empat kaedah mencipta nombor rawak dalam java yang saya pelajari

    java

    Kod berikut semuanya digunakan untuk mencari integer rawak antara a ~ b

    1.Random

    Buat objek

    Random ra = new Random();
    int right = (Math.max(a,b)) ;
    int left = (Math.min(a,b);
    
    int nu = (ra.nextInt(right) + left );

    Julat nilai kiri nilai minimum nilai maksimum kanan

    2.SecureRandom

    Buat objek

    SecureRandom sra = new SecureRandom();
    int right = (Math.max(a,b)) ;
    int left = (Math.min(a,b);
    
    int nu = (sra .nextInt(right) + left );

    Julat nilai kiri nilai minimum nilai maksimum kanan

    3.ThreadLocalRandom

    Buat objek

    ThreadLocalRandom tra = ThreadLocalRandom.current();

    Cari nilai kiri dan nilai kanan nombor rawak

    int right = (Math.max(a,b)) ;
    int left = (Math.min(a,b);
    
    int nu = (tra .nextInt(right) + left );

    Julat nilai kiri, nilai minimum, kanan, nilai maksimum

    4.Math.Random

    Memandangkan kaedah dalam Matematik adalah statik, anda boleh menggunakan nama kelas secara langsung Gunakan nama kaedah

    int number = (int)(a + Math.random()*(b-a+1)) //返回一个int类型的参数 所以用 int 接收

    Julat a <= nombor rawak< (b -a +1)

    2 <= nombor rawak< (4 -2 +1)

    Kod Lengkap

    import java.security.SecureRandom;
    import java.util.Random;
    import java.util.Scanner;
    import java.util.concurrent.ThreadLocalRandom;
    
    public class FourWaysOfRandomNumbers {
        public static void main(String[] args) {
            //用户输入两个数, 然后程序取这两个数里面的其中随机一个数
            Scanner input =  new Scanner(System.in);
            System.out.print("请输入两个数:");
            int a = input.nextInt();
            int b = input.nextInt();
    
            // 取值范围   left 最小值    right 最大值
            int right = Math.max(a,b);
            int left = Math.min(a,b);
            int nu;
    
            //四种生成随机数的方法
    
            //第一种
            Random ra = new Random();
                 while( true){
                nu =(ra.nextInt(right) + left ) ;
                System.out.println(nu);
    
                //找到最大随机整数 输出并结束
                if(nu == right) {
    
                    System.out.println(nu);
                    return;
                }
            }
    
            //第二种
    /*
            SecureRandom sra = new SecureRandom();
    
            while(true){
                nu =(sra.nextInt(right) + left ) ;
                System.out.println(nu);
    
                //找到最大随机整数 输出并结束
                if(nu == right) {
                    System.out.println(nu);
                    return;
                }
            }*/
    
    
            //第三种  在多线程的时候使用 是最佳的; 因为它会为每个线程都 使用不同的种子
           /* ThreadLocalRandom tra =  ThreadLocalRandom.current();
            while(true){
                nu =(tra.nextInt(right) + left ) ;
                System.out.println(nu);
    
                //找到最大随机整数 输出并结束
                if(nu == right) {
                    System.out.println(nu);
                    return;
                }
            }*/
    
          /*  //第四种
             int value = (int)(a + Math.random()*(b-a+1));
            System.out.println(value);
    */
    
    
        }
    
    }

    Atas ialah kandungan terperinci Apakah cara untuk mencipta nombor rawak dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam