黑马程序员技术交流社区
标题:
请教一个关于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
//如果想获得任意范围内的随机数该咋办?如想得3-8之间的一个随机数;想得129到324之间的一个随机数?
public class Extra_RandomSpecial
{
public static void main(String[] args)
{
Random r=new Random();
//[0-(8-3+1))+3=[0-6)+3=[3-9)就是3-8之间了
int rs1=r.nextInt(6)+3;
//同理[0-(324-129+1))+129就是129-324之间
int rs2=r.nextInt(324-129+1)+129;
System.out.println(rs1);
System.out.println(rs2);
}
}
复制代码
作者:
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