A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李成航 中级黑马   /  2012-4-3 19:04  /  2211 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天查看api文档,发现java中的random方法只能获得0到1(或任意差10范围内)的随机数。那我想获得任意范围内的随机数该咋办?
如想得3-8之间的一个随机数;想得129到324之间的一个随机数?

4 个回复

倒序浏览
刚想搜索的,但又想试试独自写能否出来,老是 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之间类同。
回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1黑马币 +6 收起 理由
李成航 + 6 很给力!

查看全部评分

回复 使用道具 举报
H07000223 发表于 2012-4-3 19:50

这个不是很难的~~~是你用的少
能实现的代码最具说服力~~~
回复 使用道具 举报
本帖最后由 黄秋 于 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;

点评

对ok了  发表于 2012-4-4 22:04
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马