zoukankan      html  css  js  c++  java
  • 用rand5()生成rand(n)

    问题:有函数rand5(),它能够等概率生成[0,5)之间的整数。由rand5()构造rand(n)使其能够等概率生成[0,n)之间的整数。

    思路1:有rand5()先生成等概率生成0和1的rand01(),有了rand01就可以像上一篇文章一样生成rand(n)。

    思路2:rand5和rand01有何区别?一个是生成01,一个是生成01234,(一个以2为基,一个以5为基),既然rand01能用来构造rand(n),那么rand5也可以通过同样的原理得到rand(n).

    Java代码:

    //用rand5生成rand(n)
        public int rand2(int n){
            while(true){
                int v=0;
                int base=1;
                int bits=(int)Math.ceil((Math.log(n)/Math.log(5)));
                for(int i=0;i<bits;i++){
                    v+=rand5()*base;
                    base*=5;
                }
                if(v<n){
                    return v;
                }
            }
        }
  • 相关阅读:
    cmake
    docker
    rust
    linux
    FPGA
    visual studio
    win+R
    word文档的导出(用freemarker模板导出)(桃)
    iconfont的引入方法
    jquery 日期插件
  • 原文地址:https://www.cnblogs.com/orchid/p/3331649.html
Copyright © 2011-2022 走看看