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类的nextInt(int arg0)方法,感觉不怎么好,所以自己利用线性同余法重新写了一个,希望有用!
J2me中文教程.pdf J2me中文教程.pdf
J2ME API J2ME API J2ME API J2ME API J2ME API
J2ME中查表法使用三角函数 J2ME中查表法使用三角函数
J2ME中RMS存储工具使用解析,希望对大家有用!
在eclipse中怎样使用j2me 在eclipse中怎样使用j2me 在eclipse中怎样使用j2me
J2ME中文教程 不错的学习资料,刚开始学习的可以参考下!
J2ME 中文api以及应用 J2ME 中文api以及应用.rar
基于低级界面的j2me UI库类,有demo和源码。高级界面的东西虽然好用但是在不同的手机上面显示得不一样,有的好看有的很丑,但是基于低级界面的就不一样了。在不同手机上显示出来都是一样的,这个UI库类是企业级的。...
j2me 文档 开发 官方 中文 j2me 文档 开发 官方 中文 j2me 文档 开发 官方 中文
第十一章“搭建开发平台—WTK”主要讲述J2ME 新手最常使用的开发工具Wireless Toolkit (WTK)。从WTK 的安装、到MIDlet 项目的创建、以及最后的打包发布,一步步带领读者进 入MIDlet 的开发世界! 第十二章“搭建...
J2ME 用Game包的Sprite精灵类实现上下左右四个方向的人物移动
J2ME中文API J2ME中文API帮助文档
J2ME技术概述,CLDC简介,MIDP的使用,GAME API,等技术
J2ME中文教程 J2ME中文教程
J2ME开发 J2ME开发 J2ME开发 J2ME开发
j2me网络类,http协议传输j2me网络类,http协议传输j2me网络类,http协议传输
j2me中文教程
浅谈j2me中的Form类,这部分主要讨论Form类和可以放置到表单上去的组件。
J2me中任意角度图片旋转 J2me中任意角度图片旋转