您的位置:首页 > 编程语言 > Java开发

用数学的方法证明利用Random工具取区间[a,b)内随机数的算法

2014-08-22 20:32 465 查看
经常在网上看到一种用Java的Random工具取某个区间[a,b)内随机数的算法 random.nextInt(b-a)+a,琢磨了一下,想了个数学的方法来证明它,在这里标记备份一下。

已知:random.nextInt(n) 可以取到[0,n)之间的随机数

目标:取[a,b)间的随机数

证明过程:

因为:random.nextInt(n) =〉 [0,n)

所以:random.nextInt(x)+y =〉[0+y,x+y) = [y,x+y)

令:a=y,b=x+y

则:b=a+x =〉 x=b-a

所以:random.nextInt(b-a)+a 〈=〉 random.nextInt(x)+y

所以:random.nextInt(b-a)+a =〉[y,x+y)〈=〉[a,b)

所以得证。

证明过程很简单,主要思想是等价代换,思考的时候要用到分析法,即从目标到条件一步步接近。

下面是代码表示的算法:

/**
* 在区间[start,end)之间取随机数
* @param start 起始数(含)
* @param end 终止数(不含)
* @return 取到的随机数
*/
public final static int random(int start,int end){
final Random aRandom=new Random();
return aRandom.nextInt(end-start)+start;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVA 算法 random 数学