您的位置:首页 > 职场人生

面试题之获取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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试题 Math random