Heim  >  Artikel  >  Java  >  Welche Möglichkeiten gibt es, Zufallszahlen in Java zu erstellen?

Welche Möglichkeiten gibt es, Zufallszahlen in Java zu erstellen?

WBOY
WBOYnach vorne
2023-05-01 14:52:151181Durchsuche

    Das erste Mal, dass ich mit Zufallszahlen in Berührung kam, war rand() in der Sprache C, aber wenn ich es noch einmal ausführe, werde ich das feststellen , eh, Das Ergebnis ist tatsächlich das gleiche wie bei der letzten Ausführung. Da es keinen Initialisierungs-Seed gibt, werden die generierten Zufallszahlen jedes Mal gleich sein Für einen Zufallszahlengenerator wird der Startwert für die aktuelle Zeit angegeben, nämlich srand((unsigned) time (&t)); Die in meiner C-Sprache häufig verwendeten Zufallszahlenfunktionen sind wie folgt:

    #🎜 🎜#c-Sprache-Zufallszahl#🎜🎜 #
    #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;
    }

    Natürlich ist das nicht das Wichtigste. Heute werde ich über die vier Methoden zum Erstellen von Zufallszahlen in Java sprechen, die ich gelernt habe

    # 🎜🎜#Java

    Die folgenden Codes sind alle. Es geht darum, eine zufällige ganze Zahl zwischen a und b zu finden 🎜#
    Random ra = new Random();
    int right = (Math.max(a,b)) ;
    int left = (Math.min(a,b);
    
    int nu = (ra.nextInt(right) + left );

    Wertebereich links Minimalwert rechts Maximalwert

    2.SecureRandom

    Objekt erstellen

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

    Wertebereich links Minimalwert rechter Maximalwert

    3. ThreadLocalRandom

    Objekt erstellen

    ThreadLocalRandom tra = ThreadLocalRandom.current();

    Finde den linken und rechten Wert der Zufallszahl

    int right = (Math.max(a,b)) ;
    int left = (Math.min(a,b);
    
    int nu = (tra .nextInt(right) + left );
    # 🎜🎜#Wertebereich links Minimalwert rechts Maximalwert#🎜 🎜#

    4.Math.Random

    Da die Methode in Math statisch ist, kann der Klassenname direkt verwendet werden Name verwendet

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

    Scope a <= Zufallszahl< (b -a +1)

    2 <= Zufallszahl< (4 -2 +1)#🎜 🎜#

    Vollständiger Code

    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);
    */
    
    
        }
    
    }

    Das obige ist der detaillierte Inhalt vonWelche Möglichkeiten gibt es, Zufallszahlen in Java zu erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen