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





代碼中 int returnRan=ran%(max-min+1)+min 是:
把上面的隨機整數(shù) random.nextInt(),絕對值Math.abs(random.nextInt()) 后
再來取模(即取余) ran% x, 產(chǎn)生一個[0-x]的隨機整數(shù)。
打個比方: ran = 100;
但是我要的隨機數(shù)是在3-10之間的,那么上面就會是
int returnRan=ran%8+3 ;
即:int returnRan=ran%(10-3+1)+3
解釋:
取余是從0-目的數(shù)之前的數(shù)。 如 x%m, 那么結(jié)果范圍是 [0, m-1],
所以,取0-m之間的隨機數(shù),要 (random.nextInt()) %(m+1);
因為(random.nextInt())包括負值,再取一下絕對值,所以:
Math.abs(random.nextInt()) %(m+1);
例子:
int ran=Math.abs(random.nextInt());
1, 取0-3之間的隨機整數(shù):ran%4 = ran%(3+1);
2, 取4-9之間的隨機整數(shù):ran%6+4 = ran%(9-4+1)+4; 即,先產(chǎn)生0-5之間的隨機數(shù),然后再加4;
<騎豬闖天下>