黑马程序员技术交流社区

标题: 请教一个关于Random的问题?急 [打印本页]

作者: 李成航    时间: 2012-4-3 19:04
标题: 请教一个关于Random的问题?急
今天查看api文档,发现java中的random方法只能获得0到1(或任意差10范围内)的随机数。那我想获得任意范围内的随机数该咋办?
如想得3-8之间的一个随机数;想得129到324之间的一个随机数?
作者: 黄秋    时间: 2012-4-3 19:35
刚想搜索的,但又想试试独自写能否出来,老是 search ,万一笔试呢。

好象数学问题,用倒推法:0<x<1 要转换为: 3<x<8 ;
如果是0<x<8,那么两边乘8就行,现要乘:8-3=5;
3/5<x<8/5 --> 0.6<x<1.6 -0.6 --> 0<x<1

逆运算推回去:0<x<1 +0.6 --> 0.6<x<1.6  *5 --> 3<x<8

129到324之间类同。
作者: H07000223    时间: 2012-4-3 19:50
  1. //如果想获得任意范围内的随机数该咋办?如想得3-8之间的一个随机数;想得129到324之间的一个随机数?
  2. public class Extra_RandomSpecial
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 Random r=new Random();
  7.                
  8.                 //[0-(8-3+1))+3=[0-6)+3=[3-9)就是3-8之间了
  9.                 int rs1=r.nextInt(6)+3;
  10.                
  11.                 //同理[0-(324-129+1))+129就是129-324之间
  12.                 int rs2=r.nextInt(324-129+1)+129;
  13.                
  14.                 System.out.println(rs1);
  15.                 System.out.println(rs2);
  16.         }
  17. }
复制代码

作者: H07000223    时间: 2012-4-3 20:27
H07000223 发表于 2012-4-3 19:50

这个不是很难的~~~是你用的少
能实现的代码最具说服力~~~
作者: 黄秋    时间: 2012-4-4 20:33
本帖最后由 黄秋 于 2012-4-4 20:41 编辑

之前的算法复杂了,下面的就可以:
1. java.util.Random:  new Random().nextInt(end-start+1) + start;
2. Math.random:   (int)(Math.random()*(end-start+1))+start;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2