J2ME中,由于大部分的游戏都会涉及到随机性的事件,Random类自然就成为J2ME程序员经常使用的一个类了。但是对于新手来说,Random类看似简单,也有可能会出现这样那样的错误。所以在这里把我对于这个类的使用心得总结一下。
random类在CLDC1.0中就已经定义了。这个类有两个构造函数Random() 和Random(long seed) 并且提供了四个常用方法:
nextInt()
nextLong()
setSeed(long seed)
nextInt()用来产生随机整数,最大2的32次方
nextLong()用来产生随机长整数,最大2的64次方
setSeed(long seed) 用于设定随机数的种子,即这里的seed。随机数种子的用处是:一般说来,这里的Random类产生随机数是伪随机数,是系统采用特定的算法生成出来的,关于这一点我们可以采用一个试验来证明。方法是new两个Random类random1和random2。各自调用nextInt方法10次,我们可以看出,虽然各自产生的是随机数,但是两个Random类产生的随机数都是一样的。这就使得随机数存在着漏洞。如果这样的随机数用在安全应用上面,就达不到预想的效果了。所以Random类提供了这个方法,以进一步提高随机性。
在这里需要特别为新手朋友们指出的是,我们在使用随机数的时候,不能每次都new 一个 Random类出来,又不设定随机数种子,因为那样作的结果是,每次产生的随机数都是一样的。
将一个“错误”的例子写在这里:
import java.util.Random;
import javax.microedition.midlet.*;
public class J2ME extends MIDlet {
private Random random;
public J2ME() {
}
protected void startApp() throws MIDletStateChangeException {
for (int i = 0; i < 20; i++) {
random=new Random();
System.out.println(random.nextInt());
}
}
protected void pauseApp() {
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
这个例子产生的随机数很多都是相同的。正确的做法应该是在 protected void startApp() throws MIDletStateChangeException 函数中做出如下修改
random=new Random();
for (int i = 0; i < 20; i++) {
System.out.println(random.nextInt());
}
关于Random类的总结就到这里了,相信大家都可以正确使用这个类了。呵呵,请多关照。
详细解决方案
J2ME中Random种的使用
热度:5830 发布时间:2013-02-25 21:33:10.0
相关解决方案
- J2ME 改变字体大小解决办法
- j2me 获取wap站点发生的验证码图片,求高手解答
- j2me 验证码提交,该怎么解决
- 文件抛java.io.IOException: at com.sun.midp.io.j2me.file.Protocol.delete错误
- j2me 环境筹建
- j2me setRequestProperty解决办法
- j2me 怎么获取当月的天数!
- 抢救!j2me 服务器
- j2me 用ksoap连接webservice 的有关问题
- j2me 排序步骤 整数数组
- Effective J2ME(一)
- Effective J2ME(三)
- J2ME 本土文件读写
- J2me 游戏点阵字库发动机(一) 之初步
- J2ME Mobile 3D入门教程(2)
- 手机 J2ME MIDP 性能测试用具(MIDP BenchMark)
- fedora 上 j2me 的 中文 乱码
- J2ME UI之窗口构件选择条
- J2ME UI之窗口元件背景
- j2me 排雷游戏
- J2ME 图片上载实例 简洁明了
- j2me 后台老板运行
- 鸟哥,j2me,D608一些有关问题
- j2me 创造多级文件夹方法
- Effective J2ME (一)
- Effective J2ME (三)
- J2ME Mobile 3D入门教程(1)
- j2me rms 的奇怪有关问题
- J2ME Polish 全攻略之懂得各个配置参数
- J2ME 游戏脚本发动机/J2me game script engine 研究之一