Maison > Java > javaDidacticiel > le corps du texte

Quels sont les moyens de créer des nombres aléatoires en Java ?

WBOY
Libérer: 2023-05-01 14:52:15
avant
1158 Les gens l'ont consulté

    La première fois que je suis entré en contact avec des nombres aléatoires, c'était rand() en langage C mais quand je l'exécuterai à nouveau, je trouverai cela ; , hein, le résultat est en fait le même que lors de la dernière exécution. Comme il n'y a pas de graine d'initialisation, le système utilise une graine unifiée. Ensuite, les nombres aléatoires générés seront les mêmes à chaque fois. utilisé. Pour un générateur de nombres aléatoires, la graine est donnée à l'heure actuelle, qui est srand((unsigned) time (&t)); Les fonctions de nombres aléatoires couramment utilisées dans mon langage C sont les suivantes :

    #🎜 🎜#nombre aléatoire en langage 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;
    }
    Copier après la connexion

    Bien sûr, ce n'est pas la chose la plus importante Aujourd'hui, je vais parler des quatre méthodes de création de nombres aléatoires en Java que j'ai apprises

    #. 🎜🎜#java

    Les codes suivants sont tous Il s'agit de trouver un entier aléatoire entre a ~ b

    1.Random

    Créer un objet#🎜 🎜#
    Random ra = new Random();
    int right = (Math.max(a,b)) ;
    int left = (Math.min(a,b);
    
    int nu = (ra.nextInt(right) + left );
    Copier après la connexion

    Plage de valeurs gauche valeur minimale droite valeur maximale

    2.SecureRandom

    Créer un objet

    SecureRandom sra = new SecureRandom();
    int right = (Math.max(a,b)) ;
    int left = (Math.min(a,b);
    
    int nu = (sra .nextInt(right) + left );
    Copier après la connexion

    Plage de valeurs gauche valeur minimale valeur maximale droite

    3. ThreadLocalRandom

    Créer un objet

    ThreadLocalRandom tra = ThreadLocalRandom.current();
    Copier après la connexion

    Trouver la valeur gauche et la valeur droite du nombre aléatoire

    int right = (Math.max(a,b)) ;
    int left = (Math.min(a,b);
    
    int nu = (tra .nextInt(right) + left );
    Copier après la connexion
    # 🎜🎜#Plage de valeurs valeur minimale gauche valeur maximale droite#🎜 🎜#

    4.Math.Random

    Parce que la méthode en mathématiques est statique, le nom de la classe peut être utilisé directement La méthode. le nom utilise

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

    Scope a <= Nombre aléatoire< 🎜#

    Code complet

    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);
    */
    
    
        }
    
    }
    Copier après la connexion

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Étiquettes associées:
    source:yisu.com
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!