zoukankan      html  css  js  c++  java
  • Java产生随机数

            今天学桶排序,因为需要随机产生[0,1)的等长小数,于是随手谷歌之,翻了些资料,与诸君共享……

    一.java.lang.Math

            该类下边有random()方法,产生[0,1)的double值,注意1.0取不到;所以int p = (int)(Math.random()*10) 会产生[0,9]的整数值,没有10。

            补充:Math.round(11.5) = 12,Math.round(-11.5) = -11,其实round函数相当于floor(x+0.5)。ps:这是一道真实的面试题,大公司的。

           PI:Math.PI,自然对数是Math.E,还有log、log10、hypot、floor、ceil,max、min、exp。

    二.若干问题

      如何让Math.random()生成的随机数包括1(不是数字包含1,而是产生1.0)?刚想到先随机Random.nextInt(2)以50%概率分别产生0和1,若是0,就选择Math.random(),否则选择1;不过这样产生1的概率就是50%了。随机选取0-9,a-z,A-Z所有字符组成的一字符数组chararray(生成的时候一个一个写太麻烦,直接nw一个String,然后toCharArray),也可以chararray[Random.nextInt(62)]如何产生的数字包含1(三位数)?先new String("012……9"),先产生两个数字直接用或者当String里的下标取值,然后把1插入就行了。

    三.java.util.Random

            查看API发现有nextInt(int n),nextDouble,nextFloat等,后两者都是返回[0,1),前者返回[0,n)(像C/C++里的rand()函数,返回0到RAND_MAX)。

            则产生[0,10]可以整数可以:

    Random r = new Random(); 
    int p =r.nextInt(10)+1; //这个是[1,10]
    //------------------
    (int)(Math.random()*11)

              更一般地,产生[min,max]的整数:

    int createRandom(int min, int max) {
        Random r = new Random();
        return r.nextInt(max-min+1)+ min;
    }
  • 相关阅读:
    mvn打包不执行测试
    sprngmvc静态资源
    java.lang.NoSuchMethodError: java.util.Map.putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/la
    Lombok annotation handler class lombok.javac.handlers.HandleData failed on G
    linux 一些命令(2)
    linux 空间释放,mysql数据库空间释放
    mysql 日志清理
    idea svn performing vcs refresh 很长时间
    装饰页面decorators.xml
    拦截器的使用,配置手机浏览器访问的h5页面
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3214212.html
Copyright © 2011-2022 走看看