『壹』 java中隨機數怎麼生成
java的三種隨機數生成方式
隨機數的產生在一些代碼中很常用,也是我們必須要掌握的。而java中產生隨機數的方法主要有三種:
第一種:new Random()
第二種:Math.random()
第三種:currentTimeMillis()
『貳』 java生成隨機數
importjava.util.Random;
publicclassRandomCreator{
/**
*獲取給定范圍的隨機數(范圍只能在1~99之間)
*@paramstart范圍開始位置(1<start<99)
*@paramend范圍結束位置(1<start<end<99)
*@returnString數字的大寫形式(如:11-->壹拾壹)
*/
publicstaticStringgetRandom(intstart,intend)
{
Randomrandom=newRandom();
intrandomInt=random.nextInt(end);
while(randomInt<start)
{
randomInt=random.nextInt(end);
}
returnconvertInt(randomInt);
}
/**
*轉換獲取的隨機數(如:11-->壹拾壹)
*@paramnum隨機數
*@returnString轉換後的結果
*/
publicstaticStringconvertInt(Integernum)
{
String[]wordArray=newString[]{"壹","貳","叄","肆","伍","陸","柒","捌","玖","拾"};
StringBufferbuff=newStringBuffer();
intshiwei=(num/10)-1;
intgewei=(num%10)-1;
buff.append(wordArray[shiwei]).append(wordArray[9]).append(wordArray[gewei]);
returnbuff.toString();
}
publicstaticvoidmain(String[]args){
//測試,注意方法給定的范圍
System.out.println(getRandom(1,55));
}
}
這個類的方法應該能實現你說的功能,界面按鈕這些,你可以自己去寫,上面的代碼放到Servlet中就可以了。
『叄』 如何在java中產生隨機數
在j2se里我們可以使用Math.random()方法來產生一個隨機數,這個產生的隨機數是0-1之間的一個double,我們可以把他乘以一定的數,比如說乘以100,他就是個100以內的隨機,這個在j2me中沒有。
在java.util這個包裡面提供了一個Random的類,我們可以新建一個Random的對象來產生隨機數,他可以產生隨機整數、隨機float、隨機double,隨機long,這個也是我們在j2me的程序里經常用的一個取隨機數的方法。
在我們的System類中有一個currentTimeMillis()方法,這個方法返回一個從1970年1月1號0點0分0秒到目前的一個毫秒數,返回類型是long,我們可以拿他作為一個隨機數,我們可以拿他對一些數取模,就可以把他限制在一個范圍之內。
『肆』 Java產生隨機數的幾種方式
方法1
(數據類型)(最小值+Math.random()*(最大值-最小值+1))
例:
(int)(1+Math.random()*(10-1+1))
從1到10的int型隨數
方法2
獲得隨機數
for (int i=0;i<30;i++)
{System.out.println((int)(1+Math.random()*10));}
(int)(1+Math.random()*10)
通過java.Math包的random方法得到1-10的int隨機數
公式是:最小值---最大值(整數)的隨機數
(類型)最小值+Math.random()*最大值
方法3
Random ra =new Random();
for (int i=0;i<30;i++)
{System.out.println(ra.nextInt(10)+1);}
通過java.util包中的Random類的nextInt方法來得到1-10的int隨機數
生成0到1之間的任意隨機小數:
生成[0,d)區間的隨機小數,d為任意正的小數,則只需要將nextDouble方法的返回值乘以d即可。
[n1,n2]
也就是 ra.nextDouble() * (n2-n1)+n1
『伍』 java如何生成隨機數
可以先通過random方法生成一個隨機數,然後將結果乘以100,然後再利用int方法進行轉換,就可以得到一個0到99的隨機整數。
『陸』 在java中產生隨機數
一、利用random方法來生成隨機數。
在Java語言中生成隨機數相對來說比較簡單,因為有一個現成的方法可以使用。在Math類中,Java語言提供了一個叫做random的方法。通過這個方法可以讓系統產生隨機數。不過默認情況下,其產生的隨機數范圍比較小,為大於等於0到小於1的double型隨機數。雖然其隨機數產生的范圍比較小,不能夠滿足日常的需求。如日常工作中可能需要產生整數的隨機數。其實,只要對這個方法進行一些靈活的處理,就可以獲取任意范圍的隨機數。
如我們可以先通過random方法生成一個隨機數,然後將結果乘以10。此時產生的隨機數字即為大於等於0小於10的數字。然後再利用Int方法進行轉換(它會去掉小數掉後面的數字,即只獲取整數部分,不是四捨五入)。最後即可獲取一個0到9的整數型隨機數字。其實現方法很簡單,就是對原有的random方法按照如下的格式進行變型:(int)(Math.Random()*10)即可。其實我們還可以對這個方法進行擴展,讓其產生任意范圍內的隨機數。至需要將這個10換成n即可,如改為(int)(Math.Random()*n)。此時應用程序就會產生一個大於等於0小與n之間的隨機數。如將n設置為5,那麼其就會產生一個0到5之間的整數型的隨機數。如果將這個寫成一個帶參數的方法,那麼只要用戶輸入需要生成隨機數的最大值,就可以讓這個方法來生成制定范圍的隨機數。在Java中定義自己的工具庫
有時候程序員可能需要生成一個指定范圍內的隨機偶數或者奇數。此時是否可以通過這個方法來實現呢?答案是肯定的。如現在程序要需要生成一個1-100范圍內的偶數。此時該如何實現?首先,需要生成一個0到99之內的隨機數(至於這里為什麼是99,大家耐心看下去就知道原因了)。要實現這個需求,很簡單吧,只要通過如下語句就可以實現: i=1+(int)(Math.Random()*100)。其中(int)(Math.Random()*99)產生0到99的整數型隨機數。然後再加上1就是產生1到100之間的隨機整數。然後將產生的隨機數賦值給變數i。但是此時其產生的隨機數即有偶數,又有奇數。而現在程序員需要的是一個隨機的偶數。那麼我們可以在後面加上一個if判斷語句。將這個隨機數除以2,如果沒有餘數的話(或者余數為0)則表明這個隨機數是偶數,直接返回即可。如果其返回的余數不為零,那麼就表明其是奇數,我們只要加上1就變為了偶數,返回即可。注意,在上面的隨機數生成中,筆者採用的范圍是0到99,然後再加上1讓其變為1到100的隨機數。最後的結果就是生成1到100之間的隨機偶數。其實,如果要范圍隨機奇數的話,至需要對上面的語句進行稍微的修改即可。Java:改變你我的世界
『柒』 java怎樣產生不同隨機數
JAVA中取隨機數有三種方法:
一、Math.random()方法,產生一個大於等於0小於1的一個double,我們可以把他乘以一定的數,比如說乘以100,他就是個100以內的隨機。
二、在java.util.Random的類,我們可以新建一個Random的對象來產生隨機數,他可以產生int、float、double,long。
三、在System類中有一個currentTimeMillis()方法,這個方法返回一個從1970年1月1號0點0分0秒到目前的一個毫秒數,返回類型是long,我們可以拿他作為一個隨機數,我們可以拿他對一些數取模,就可以把他限制在一個范圍之內
『捌』 Java語言中自動生成隨機數
java.lang.Math
random()
返回帶正號的
double
值,該值大於等於
0.0
且小於
1.0。返回值是一個偽隨機選擇的數,在該范圍
內(近似)均勻分布
『玖』 如何用java生成指定范圍的隨機數
要生成在[min,max]之間的隨機整數,
復制代碼 代碼如下:
package e.sjtu.erplab.io;
import java.util.Random;
public class RandomTest {
public static void main(String[] args) {
int max=20;
int min=10;
Random random = new Random();
int s = random.nextInt(max)%(max-min+1) + min;
System.out.println(s);
}
}
random.nextInt(max)表示生成[0,max]之間的隨機數,然後對(max-min+1)取模。
以生成[10,20]隨機數為例,首先生成0-20的隨機數,然後對(20-10+1)取模得到[0-10]之間的隨機數,然後加上min=10,最後生成的是10-20的隨機數
『拾』 用java怎麼做隨機數
在Java
中我們可以使用java.util.Random類來產生一個隨機數發生器。它有兩種形式的構造函數,分別是Random()和Random(long
seed)。Random()使用當前時間即System.currentTimeMillis()作為發生器的種子,Random(long
seed)使用指定的seed作為發生器的種子。
隨機數發生器(Random)對象產生以後,通過調用不同的method:nextInt()、nextLong()、nextFloat()、nextDouble()等獲得不同類型隨機數。
1>生成隨機數
Random random = new Random();
Random random = new Random(100);//指定種子數100
random調用不同的方法,獲得隨機數。
如果2個Random對象使用相同的種子(比如都是100),並且以相同的順序調用相同的函數,那它們返回值完全相同。如下面代碼中兩個Random對象的輸出完全相同
import java.util.*;
class TestRandom {
public static void main(String[] args) {
Random random1 = new Random(100);
System.out.println(random1.nextInt());
System.out.println(random1.nextFloat());
System.out.println(random1.nextBoolean());
Random random2 = new Random(100);
System.out.println(random2.nextInt());
System.out.println(random2.nextFloat());
System.out.println(random2.nextBoolean());
}
}
2>指定范圍內的隨機數
隨機數控制在某個范圍內,使用模數運算符%
import java.util.*;
class TestRandom {
public static void main(String[] args) {
Random random = new Random();
for(int i = 0; i < 10;i++) {
System.out.println(Math.abs(random.nextInt())%10);
}
}
}
獲得的隨機數有正有負的,用Math.abs使獲取數據范圍為非負數
3>獲取指定范圍內的不重復隨機數
import java.util.*;
class TestRandom {
public static void main(String[] args) {
int[] intRet = new int[6];
int intRd = 0; //存放隨機數
int count = 0; //記錄生成的隨機數個數
int flag = 0; //是否已經生成過標志
while(count<6){
Random rdm = new Random(System.currentTimeMillis());
intRd = Math.abs(rdm.nextInt())%32+1;
for(int i=0;i<count;i++){
if(intRet[i]==intRd){
flag = 1;
break;
}else{
flag = 0;
}
}
if(flag==0){
intRet[count] = intRd;
count++;
}
}
for(int t=0;t<6;t++){
System.out.println(t+"->"+intRet[t]);
}
}
}