怎么样获取随机数里的7位而不产生重复

zx377359832 2009-04-18 12:24:10
public String randomNum() {
Calendar c = Calendar.getInstance();
int s = (c.get(Calendar.MONTH) * 10000)
+ (c.get(Calendar.SECOND) * 1000) + c.get(Calendar.MILLISECOND);
Random a = new Random();
a.setSeed(s);

String random = a.nextFloat() + "";

String finalNum = "DI" + random.substring(2, 9);
return finalNum;
}


这是我的获取随机数的方法,但是很容易报错。

各位大大们帮忙改下,怎么样获取随机数里的7为而不产生重复、
...全文
225 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Steve 2009-04-18
  • 打赏
  • 举报
回复
取a-b范围(包含a,不包含b)的整数: (int)((b-a)*rnd)+a
所以7位随机数应该是: (long)(10000000-1000000)*rnd + 1000000

String random = String.valueOf((long)(a.nextFloat()*9000000) + 1000000);
Steve 2009-04-18
  • 打赏
  • 举报
回复
因为你的0到1的小数末尾是0的话位数就不够了,所以取子字符串越界.
ben0759 2009-04-18
  • 打赏
  • 举报
回复

Set set=new HashSet();
Random a=new Random();
while(set.length<7){
set.put(a.get(0,10));
}

具体代码实现可能忘记了,这个只是逻辑,按照这个逻辑去实现就可以了,set里面存放的是不重复的东西,所以通过判断可以实现楼主要的功能。
宝宝的笨熊 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 affix 的回复:]
楼上各位,Random有专门的method解决这个问题啊。 nextInt(int n), 这个method 返回值在0-n之间,包含0与n。
所以可以这样获得7位的随机数:

Java codeInt r = randomObject.nextInt(999999) + 1000000;


简单利落明了!
[/Quote]
nextInt(int n), 这个method 返回值在0-n之间,不包含n
Study_Work_2009 2009-04-18
  • 打赏
  • 举报
回复
Random r = new Random();
Set set = new HashSet();
while (set.size() < 7) {
set.add(r.nextInt(10));
}
Object[] obj = set.toArray();
for (int i = 0; i < obj.length; i++) {
System.out.print(obj[i]);
}
chenleicom 2009-04-18
  • 打赏
  • 举报
回复
Random a = new Random(10000000); 在里面传个值 这个就表示1千万才重复一次 但是这几率不可能
Steve 2009-04-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 affix 的回复:]
楼上各位,Random有专门的method解决这个问题啊。 nextInt(int n), 这个method 返回值在0-n之间,包含0与n。
所以可以这样获得7位的随机数:
Java codeInt r=randomObject.nextInt(999999)+1000000;
简单利落明了!
[/Quote]
把999999换成9000000就行了.
affix 2009-04-18
  • 打赏
  • 举报
回复
各位,楼上我写错了!!!!不符合楼主需求。
还是3楼runffer_yang的答案正确。
抱歉。
affix 2009-04-18
  • 打赏
  • 举报
回复
楼上各位,Random有专门的method解决这个问题啊。 nextInt(int n), 这个method 返回值在0-n之间,包含0与n。
所以可以这样获得7位的随机数:
Int r = randomObject.nextInt(999999) + 1000000;

简单利落明了!

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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