怎么同时产生两个不同得随机数,谢谢!

bean5566 2005-06-13 12:58:37
Dao里面:
/**
* 初始密码
* @param id
* return
* @throws Exception
*/
public String getDefaultPassword() throws EsealException {
//Random ra = new Random();
//return ra.nextInt(666666);
String str="";
Random rand = new Random();
rand.setSeed(System.currentTimeMillis());
for(int i=0;i<6;i++){
str= str + rand.nextInt(10);//每次生成一位的随机数并加再str后面.这样不用考虑高位为0的情况
}
System.out.print("Radom::::::::::"+str);
return str;

}


Action里面:

//随机生成六位初始印章密码
String gpwd = dao.getDefaultPassword();
//随机生成六位初始挂失密码
String losspwd = dao.getDefaultPassword();


但是我现在必须同时初始化两个密码,为什么得到得两个初始化密码总是一样的,该怎么解决,谢谢!!!
请指教!!!
...全文
373 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
darkattack 2005-06-13
  • 打赏
  • 举报
回复
我猜不管用的吧,不幸你试试看,照我说,最保险的方法就是修改方法,传入一个seed
public String getDefaultPassword(int seed) throws EsealException {
...
}
每次调用的时候,传入seed不一样,这样就基本不会重复了。

========
为什么rand在方法外定义就可以了???
lovexuxu111 2005-06-13
  • 打赏
  • 举报
回复
为什么rand在方法外定义就可以了???
kingfish 2005-06-13
  • 打赏
  • 举报
回复
Random rand = new Random();
rand.setSeed(System.currentTimeMillis());//这句不用写,缺省就是时间做种子

由于Random是伪随机,所以相同的种子得到的随机数是一样的...

String gpwd = dao.getDefaultPassword();
String losspwd = dao.getDefaultPassword();
这两句执行时间很短,所以种子同。造成产生的随机数同。

可以采用楼上的方法或者使得种子不同。

z3h 2005-06-13
  • 打赏
  • 举报
回复
rand.setSeed(System.currentTimeMillis());
这段代码,可以不用。
darkattack 2005-06-13
  • 打赏
  • 举报
回复
rand.nextInt(i);

总之就是给不一样的seed
z3h 2005-06-13
  • 打赏
  • 举报
回复
static Random rand = new Random();

/**
* 初始密码
* @param id
* return
* @throws Exception
*/
public String getDefaultPassword() throws EsealException {
String str="";
rand.setSeed(System.currentTimeMillis());
for(int i=0;i<6;i++){
str= str + rand.nextInt(10);//每次生成一位的随机数并加再str后面.这样不用考虑高位为0的情况
}
System.out.print("Radom::::::::::"+str);
return str;

}

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧