面试题之获取start到end之间的随机数
2017-03-19 00:28
519 查看
需求
设计一个方法,获取start到end之间的随机数!分析
Math.random()方法获取0~1之间的随机数,不包含1,返回值类型为double。获取1~100之间的随机数我们这么做;
int num=Math.random()*100+1;
假想1:如果我们要取start到end之间的随机数,那么是不是可以写成:
int number=(int)(Math.random()*end+start)?
假想2:如果我们要取start到end之间的随机数,那么是不是可以写成:
int number=(int)(Math.random()*(end-start+1)+start)?
Demo1
package cn.edu.pzhu_01; import java.util.Scanner; public class MathTest { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入start:"); int start=sc.nextInt(); System.out.println("请输入end:"); int end=sc.nextInt(); for (int i = 0; i < 100; i++) { int x=1; System.out.print(getRandom(start,end)+","); } } public static int getRandom(int start, int end) { return (int)(Math.random()*end+start); } }
注:由于运行过程中出现了比end还大的数,即不在范围内的数,所以假想1不合理。
Demo2
package cn.edu.pzhu_01; import java.util.Scanner; /** * 面试题:设计一个方法,获取start到end之间的随机数 * * 分析 * A:从键盘录入数据 * B:调用方法 * C:输出结果 * */ public class MathTest { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入start:"); int start=sc.nextInt(); System.out.println("请输入end:"); int end=sc.nextInt(); for (int i = 0; i < 100; i++) { int x=1; System.out.print(getRandom(start,end)+","); } } public static int getRandom(int start, int end) { return (int)(Math.random()*(end-start+1)+start); } }
注:经过多次测试,产生的结果均在start~end范围内,假想2合理。
结果
产生start~end之间的随机数的方法封装为:public static int getRandom(int start, int end) { return (int)(Math.random()*(end-start+1)+start); }
相关文章推荐
- 获取startDate与endDate 之间相隔几天
- Java生成随机数工具类,进制之间的转换工具类,获取指定时间,时间格式转换工具类
- MySQL里获取当前week,month,quarter 的 start_date/end_date
- Python在两个数字之间获取n个随机数,并记录在文件中
- 如何获取函数的可变参数(va_list, va_start, va_arg, va_end)
- pb 获取两个数之间的随机数
- Cocos2d-x Studio (一) ----- 随机数实现(产生 start 到 end 的随机数)
- 面试题:给定一个函数rand()能产生1到m之间的等概率随机数,产生1到n之间等概率的随机数?
- 一道面试题:生成50个1到100之间的随机数,并且对其中的偶数进行降序排列 然后让他里面的数能够打乱,类似洗牌效果
- 获取10个1-20之间的随机数,要求不能重复
- 如何获取函数的变长参数(va_list, va_start, va_arg, va_end)
- 获取10个1-20之间的随机数,要求不能重复
- va_arg va_start va_end 获取函数参数内容
- 获取两个数之间的一个随机数
- 获取0到max之间的随机数
- 获取10个1-20之间的随机数,且不重复
- * 获取10个1-20之间的随机数,要求不能重复
- 10.百度最新面试题:现在有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来。
- 【转】MySQL里获取当前week、month、quarter的start_date/end_date
- 获取两个数之间的随机数-java