您好,登錄后才能下訂單哦!
這篇文章主要介紹了Java創(chuàng)建隨機(jī)數(shù)的方式有哪些的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Java創(chuàng)建隨機(jī)數(shù)的方式有哪些文章都會有所收獲,下面我們一起來看看吧。
第一次接觸到隨機(jī)數(shù)還是在c語言里面 使用的是 rand(); 但是重新執(zhí)行一次的時候會發(fā)現(xiàn),誒,居然和上一次執(zhí)行的結(jié)果是一樣的,因為沒有初始化種子,所以系統(tǒng)用的都是統(tǒng)一的種子這時就會出現(xiàn)每次產(chǎn)生的隨機(jī)數(shù)都一樣,這時就會使用到 srand();這個隨機(jī)數(shù)的發(fā)生器, 把種子給定當(dāng)前的時間 即 srand((unsigned) time (&t)); 我c語言常用的隨機(jī)數(shù)函數(shù)如下:
#include <stdio.h> int main(void) { int left,right; printf("請輸入一個數(shù):"); scanf_s("%d%d",&left,&right); //srand((unsigned)time(NULL)); //for(int i = 0; i<10; i++) //printf("%d\n",rand() % one); //改進(jìn) for (int i = 0; i < 10; i++) printf("隨機(jī)值如下:%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; }
當(dāng)然這不是最主要的今天是要講我學(xué)到的java中的四種創(chuàng)建隨機(jī)數(shù)的方法
以下代碼都是以a ~ b 之間 求出一個隨機(jī)整數(shù)
創(chuàng)建對象
Random ra = new Random(); int right = (Math.max(a,b)) ; int left = (Math.min(a,b); int nu = (ra.nextInt(right) + left );
取值范圍 left 最小值 right 最大值
創(chuàng)建對象
SecureRandom sra = new SecureRandom(); int right = (Math.max(a,b)) ; int left = (Math.min(a,b); int nu = (sra .nextInt(right) + left );
取值范圍 left 最小值 right 最大值
創(chuàng)建對象
ThreadLocalRandom tra = ThreadLocalRandom.current();
求出隨機(jī)數(shù)的左值和右值
int right = (Math.max(a,b)) ; int left = (Math.min(a,b); int nu = (tra .nextInt(right) + left );
取值范圍 left 最小值 right 最大值
由于 Math 里面的方法是靜態(tài)的所以可以直接 類名.方法名 使用
int number = (int)(a + Math.random()*(b-a+1)) //返回一個int類型的參數(shù) 所以用 int 接收
范圍 a <= 隨機(jī)數(shù) < (b -a +1)
2 <= 隨機(jī)數(shù) < (4 -2 +1 )
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) { //用戶輸入兩個數(shù), 然后程序取這兩個數(shù)里面的其中隨機(jī)一個數(shù) Scanner input = new Scanner(System.in); System.out.print("請輸入兩個數(shù):"); int a = input.nextInt(); int b = input.nextInt(); // 取值范圍 left 最小值 right 最大值 int right = Math.max(a,b); int left = Math.min(a,b); int nu; //四種生成隨機(jī)數(shù)的方法 //第一種 Random ra = new Random(); while( true){ nu =(ra.nextInt(right) + left ) ; System.out.println(nu); //找到最大隨機(jī)整數(shù) 輸出并結(jié)束 if(nu == right) { System.out.println(nu); return; } } //第二種 /* SecureRandom sra = new SecureRandom(); while(true){ nu =(sra.nextInt(right) + left ) ; System.out.println(nu); //找到最大隨機(jī)整數(shù) 輸出并結(jié)束 if(nu == right) { System.out.println(nu); return; } }*/ //第三種 在多線程的時候使用 是最佳的; 因為它會為每個線程都 使用不同的種子 /* ThreadLocalRandom tra = ThreadLocalRandom.current(); while(true){ nu =(tra.nextInt(right) + left ) ; System.out.println(nu); //找到最大隨機(jī)整數(shù) 輸出并結(jié)束 if(nu == right) { System.out.println(nu); return; } }*/ /* //第四種 int value = (int)(a + Math.random()*(b-a+1)); System.out.println(value); */ } }
關(guān)于“Java創(chuàng)建隨機(jī)數(shù)的方式有哪些”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Java創(chuàng)建隨機(jī)數(shù)的方式有哪些”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。