一、利用random方法來(lái)生成隨機(jī)數(shù)。
羅湖網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)于2013年開(kāi)始到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
在Java語(yǔ)言中生成隨機(jī)數(shù)相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,因?yàn)橛幸粋€(gè)現(xiàn)成的方法可以使用。在Math類中,Java語(yǔ)言提供了一個(gè)叫做random的方法。通過(guò)這個(gè)方法可以讓系統(tǒng)產(chǎn)生隨機(jī)數(shù)。
二、通過(guò)Random類來(lái)生成隨機(jī)數(shù)。
在Java語(yǔ)言中,除了可以通過(guò)random 方法來(lái)產(chǎn)生隨機(jī)數(shù)之外,還可以通過(guò)一個(gè)random類來(lái)產(chǎn)生隨機(jī)數(shù)。程序開(kāi)發(fā)人員可以通過(guò)實(shí)例化一個(gè)Random對(duì)象來(lái)創(chuàng)建一個(gè)隨機(jī)數(shù)的生成器。如 Random i=new Random()。通過(guò)這條語(yǔ)句就利用了Random類創(chuàng)建了一個(gè)隨機(jī)數(shù)的生成器。數(shù)
三、產(chǎn)生隨機(jī)的字符。
可以利用random方法來(lái)產(chǎn)生隨機(jī)字符。如可以利用代碼生成一個(gè)隨機(jī)的小寫(xiě)字符:(char)(‘a(chǎn)’+Math.random()*(‘z’-‘a(chǎn)’+1))。其實(shí)這跟生成任意兩個(gè)數(shù)之間的隨機(jī)數(shù)類似。通過(guò)以上的代碼就可以生成一個(gè)范圍之內(nèi)的任意隨機(jī)字符。通過(guò)對(duì)這個(gè)代碼進(jìn)行適當(dāng)?shù)男拚?,還可以生成任意兩個(gè)字符之間的隨機(jī)字符與任意大寫(xiě)字符的隨機(jī)字符。其轉(zhuǎn)換的方式跟上面提到的任意范圍之內(nèi)的隨機(jī)數(shù)類似。
下面來(lái)了解下隨機(jī)數(shù)的運(yùn)用:
在統(tǒng)計(jì)學(xué)的不同技術(shù)中需要使用隨機(jī)數(shù),比如在從統(tǒng)計(jì)總體中抽取有代表性的樣本的時(shí)候,或者在將實(shí)驗(yàn)動(dòng)物分配到不同的試驗(yàn)組的過(guò)程中,或者在進(jìn)行蒙特卡羅模擬法計(jì)算的時(shí)候等等。
真正的隨機(jī)數(shù)是使用物理現(xiàn)象產(chǎn)生的:比如擲錢(qián)幣、骰子、轉(zhuǎn)輪、使用電子元件的噪音、核裂變等等。這樣的隨機(jī)數(shù)發(fā)生器叫做物理性隨機(jī)數(shù)發(fā)生器,它們的缺點(diǎn)是技術(shù)要求比較高。
在實(shí)際應(yīng)用中往往使用偽隨機(jī)數(shù)就足夠了。這些數(shù)列是“似乎”隨機(jī)的數(shù),實(shí)際上它們是通過(guò)一個(gè)固定的、可以重復(fù)的計(jì)算方法產(chǎn)生的。計(jì)算機(jī)或計(jì)算器產(chǎn)生的隨機(jī)數(shù)有很長(zhǎng)的周期性。它們不真正地隨機(jī),因?yàn)樗鼈儗?shí)際上是可以計(jì)算出來(lái)的,但是它們具有類似于隨機(jī)數(shù)的統(tǒng)計(jì)特征。這樣的發(fā)生器叫做偽隨機(jī)數(shù)發(fā)生器。
在真正關(guān)鍵性的應(yīng)用中,比如在密碼學(xué)中,人們一般使用真正的隨機(jī)數(shù)。
C語(yǔ)言、C++、C#、Java、Matlab等程序語(yǔ)言和軟件中都有對(duì)應(yīng)的隨機(jī)數(shù)生成函數(shù),如rand等。
java代碼方法一如下:
int random=(int)(Math.random()*10+1)
java代碼方法二如下:
package bdqn_Empy;
import java.util.Random;
public class Text {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=0;
Random b=new Random();
a=b.nextInt(101);
System.out.println(a);
}
}
擴(kuò)展資料:
可以先通過(guò) random方法生成一個(gè)隨機(jī)數(shù),然后將結(jié)果乘以10。此時(shí)產(chǎn)生的隨機(jī)數(shù)字即為大于等于0小于10的數(shù)字。
然后再利用nt方法進(jìn)行轉(zhuǎn)換它會(huì)去掉小數(shù)掉后面的數(shù)字即只獲取整數(shù)部分,不是四舍五入)。最后即可獲取一個(gè)0到9的整數(shù)型隨機(jī)數(shù)字。其實(shí)現(xiàn)方法很簡(jiǎn)單,就是對(duì)原有的 grandom方法按照如下的格式進(jìn)行變型:(int( Math. Random0*10)即可。
其實(shí)我們還可以對(duì)這個(gè)方法進(jìn)行擴(kuò)展,讓其產(chǎn)生任意范圍內(nèi)的隨機(jī)數(shù)。至需要將這個(gè)10換成n即可,如改為( int(Math. Random0n)。此時(shí)應(yīng)用程序就會(huì)產(chǎn)生一個(gè)大于等于0小與n之間的隨機(jī)數(shù)。
如將n設(shè)置為5,那么其就會(huì)產(chǎn)生一個(gè)0到5之間的整數(shù)型的隨機(jī)數(shù)。如果將這個(gè)寫(xiě)成一個(gè)帶參數(shù)的方法,那么只要用戶輸入需要生成隨機(jī)數(shù)的最大值,就可以讓這個(gè)方法來(lái)生成制定范圍的隨機(jī)數(shù)。
/**
?*?隨機(jī)指定范圍內(nèi)N個(gè)不重復(fù)的數(shù)
?*?最簡(jiǎn)單最基本的方法
?*?@param?min?指定范圍最小值
?*?@param?max?指定范圍最大值
?*?@param?n?隨機(jī)數(shù)個(gè)數(shù)
?*/
public?static?int[]?randomCommon(int?min,?int?max,?int?n){
if?(n??(max?-?min?+?1)?||?max??min)?{
return?null;
}
int[]?result?=?new?int[n];
int?count?=?0;
while(count??n)?{
int?num?=?(int)?(Math.random()?*?(max?-?min))?+?min;
boolean?flag?=?true;
for?(int?j?=?0;?j??n;?j++)?{
if(num?==?result[j]){
flag?=?false;
break;
}
}
if(flag){
result[count]?=?num;
count++;
}
}
return?result;
}
Math.random()是令系統(tǒng)隨機(jī)選取大于等于 0.0 且小于 1.0 的偽隨機(jī) double 值,是Java語(yǔ)言常用代碼。
例如:var a:Number=Math.random()*2+1,設(shè)置一個(gè)隨機(jī)1到3的變量。
1、源代碼如下
import java.util.*;
public class Main
{
public static void main(String[] args) {
System.out.println("輸入N:");
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int start = 0;
Random random = new Random();
for(int i = 0 ;i10;i++){
? ? //含義 ,需要0 - N,結(jié)果 就是 0+(N-0),需要3-N 就是3+(N-3)
? ? int num = random.nextInt(N-start)+start;
System.out.print(" "+num);
}
}
}
2、運(yùn)行效果如圖