[J2ME] random類 隨機(jī)數(shù) 實(shí)例
Random類。 此類在CLDC1.0中已經(jīng)定義。
1. 這個(gè)類有兩個(gè)構(gòu)造函數(shù)Random() 和Random(long seed) 并且提供了四個(gè)常用方法:
next (int bits)
nextInt ()
nextLong ()
setSeed (long seed)
2. 實(shí)例:
Random.next(1),產(chǎn)生負(fù)“2的1次方”~“2的1次方”之間的隨機(jī)數(shù)(-2到2)
Random.next(2),產(chǎn)生負(fù)“2的2次方”~“2的2次方”之間的隨機(jī)數(shù)(-4到4)
Random.next(3),產(chǎn)生負(fù)“2的3次方”~“2的3次方”之間的隨機(jī)數(shù)(-8到8)
Random.next(4),產(chǎn)生負(fù)“2的4次方”~“2的4次方”之間的隨機(jī)數(shù)(-16到16)
Random.nextInt( n ); 產(chǎn)生一個(gè) [0, n) 之間的隨機(jī)整數(shù)
Random.nextLong();用來產(chǎn)生隨機(jī)長(zhǎng)整數(shù),最大2的64次方
Random.setSeed(long seed); 用于設(shè)定隨機(jī)數(shù)的種子,即這里的seed
3. 代碼解析:





代碼中 int returnRan=ran%(max-min+1)+min 是:
把上面的隨機(jī)整數(shù) random.nextInt(),絕對(duì)值Math.abs(random.nextInt()) 后
再來取模(即取余) ran% x, 產(chǎn)生一個(gè)[0-x]的隨機(jī)整數(shù)。
打個(gè)比方: ran = 100;
但是我要的隨機(jī)數(shù)是在3-10之間的,那么上面就會(huì)是
int returnRan=ran%8+3 ;
即:int returnRan=ran%(10-3+1)+3
解釋:
取余是從0-目的數(shù)之前的數(shù)。 如 x%m, 那么結(jié)果范圍是 [0, m-1],
所以,取0-m之間的隨機(jī)數(shù),要 (random.nextInt()) %(m+1);
因?yàn)?random.nextInt())包括負(fù)值,再取一下絕對(duì)值,所以:
Math.abs(random.nextInt()) %(m+1);
例子:
int ran=Math.abs(random.nextInt());
1, 取0-3之間的隨機(jī)整數(shù):ran%4 = ran%(3+1);
2, 取4-9之間的隨機(jī)整數(shù):ran%6+4 = ran%(9-4+1)+4; 即,先產(chǎn)生0-5之間的隨機(jī)數(shù),然后再加4;
<騎豬闖天下>
posted on 2008-08-28 16:30 騎豬闖天下 閱讀(1390) 評(píng)論(0) 編輯 收藏