读书人

生成指定范畴的随机数

发布时间: 2012-11-08 08:48:11 作者: rapoo

生成指定范围的随机数
今天想生成一些测试数据,需要生成一些随机数,但发现这居然不是个很容易的活儿。折腾了2个小时,总算找到了一个比较完美的解决办法,适合0以上的范围。网上的很多例子都是错误的。


package misc;public class Test2 {    public static void main(String[] args) {        for (int i = 0; i < 100; i++) {            System.out.println(genRandom(0,3));        }    }    public static int genRandom(int start,int end){        return start+((int)(Math.random()*10*(end-start+2))%(end-start+1));    }}


原理就是,假设R(a,b)代表a到b的随机数,那么a到b之间的随机数可以看成a+R(0,b-a),为了得到R(0,b-a),取模的数必须是b-a+1,而为了真正能实现大范围的取模,被取模的数一定要大于等于模数,否则,取的总是0,只要(b-a+2)*10就可以保证这个关系,当然你乘以10000也没有关系。 1 楼 bnmsmh 2012-08-19 start + random.nextInt(end - start)

读书人网 >其他相关

热点推荐