骑猪闯天下

J2ME随笔,记录成长的脚步

统计

留言簿(3)

阅读排行榜

评论排行榜

[J2ME] random类 随机数 实例

Random类。 此类在CLDC1.0中已经定义。


1. 这个类有两个构造函数Random() 和Random(long seed) 并且提供了四个常用方法:
   next (int bits)
   nextInt ()
   nextLong ()
   setSeed (long seed)

2. 实例:
   Random.next(1),产生负“2的1次方”~“2的1次方”之间的随机数(-2到2)  
   Random.next(2),产生负“2的2次方”~“2的2次方”之间的随机数(-4到4)  
   Random.next(3),产生负“2的3次方”~“2的3次方”之间的随机数(-8到8)  
   Random.next(4),产生负“2的4次方”~“2的4次方”之间的随机数(-16到16)

   Random.nextInt( n ); 产生一个 [0, n) 之间的随机整数

   Random.nextLong();用来产生随机长整数,最大2的64次方

   Random.setSeed(long seed); 用于设定随机数的种子,即这里的seed

3. 代码解析:

    public static int getRandom(int min,int max)
        
int ran=Math.abs(random.nextInt()); 
        
int returnRan=ran%(max-min+1)+min; 
        
return returnRan; 
    }

代码中 int returnRan=ran%(max-min+1)+min 是:
把上面的随机整数 random.nextInt(),绝对值Math.abs(random.nextInt()) 后
再来取模(即取余) ran% x, 产生一个[0-x]的随机整数。

打个比方: ran = 100;
但是我要的随机数是在3-10之间的,那么上面就会是
int returnRan=ran%8+3 ;
即:int returnRan=ran%(10-3+1)+3

解释: 
         取余是从0-目的数之前的数。 如 x%m, 那么结果范围是 [0, m-1],
         所以,取0-m之间的随机数,要 (random.nextInt()) %(m+1); 
         因为(random.nextInt())包括负值,再取一下绝对值,所以:
         Math.abs(random.nextInt()) %(m+1);

例子:
int ran=Math.abs(random.nextInt());

1, 取0-3之间的随机整数:ran%4 = ran%(3+1);
2, 取4-9之间的随机整数:ran%6+4 = ran%(9-4+1)+4;  即,先产生0-5之间的随机数,然后再加4;

 

<骑猪闯天下>

posted on 2008-08-28 16:30 骑猪闯天下 阅读(1386) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: