网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.EJB 技术的数据库应用.
.RCP II:扩展通用工作台补充—小.
.J2ME编程最佳实践之联网开发.
.除法赋值运算符 (/=).
.开发晋级篇:Java性能优化技巧集.
.强!Java实现MSN Messenger聊天.
.如何在Java应用程序中动态的分配.
.JavaSE 6基于JSR105的XML签名之实.
.Java的类专题整理.
.Apache的完全安装转载.
.SWT/JFace入门指南之用Layout管理.
.Java技术社区杂文 J2EE开发框架发.
.加密与解密原理的一个例子.
.Java读取文件中含有中文的解决办.
.怎样用Java实现MSN Messager的功.
.Java操作Excel电子表格.
.bug? Hbm2JavaTask无法实现joine.
.构建企业级应用的六大误区(英文).
.Eclipse插件开发中实现刷新和重编.
.JCP失去活力 Java.net能否取而代.

ramdom的应用

发表日期:2008-1-5



  ramdom的应用

在J2ME中,由于大部分的游戏都会涉及到随机性的事件,Random类自然就成为J2ME程序员经常使用的一个类了。但是对于新手来说,Random类看似简单,也有可能会出现这样那样的错误。所以在这里把我对于这个类的使专心得总结一下。

random类在CLDC1.0中就已经定义了。这个类有两个构造函数Random() 和Random(long seed) 并且提供了四个常用方法:

next(int bits)
nextInt()
nextLong()
setSeed(long seed)

其中next(int bits)用来产生指定范围的随机数,即:
next(1)产生2的1次方之内的随机数
next(2)产生2的2次方之内的随机数
next(3)产生2的3次方之内的随机数
...............................
next(n)产生2的n次方之内的随机数
...............................
next(32)产生2的32次方之内的随机数,就相当于nextInt()了
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类的总结就到这里了,相信大家都可以正确使用这个类了。呵呵,请多关照。
MSN:cuilichen@hotmail.com
上一篇:Resin的使用和安装(1) 人气:1156
下一篇:Session Facade 的规则和模式(1) 人气:881
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐