zoukankan      html  css  js  c++  java
  • 产生随机数的几种方法

    第一种

     Math.random()   这种方法返回的是随机的,带正的double值,该值得范围是【0.0,1.0),左闭右开。

    可以用 int(Math.random()*6)先进行取值的扩大,变成了【0.0,6.0)之间的double值,在强制转换成整形,即为0-5之间的整数。

    第二种

    JDK自带的Random类

    package test2;

    import java.util.Arrays;
    import java.util.Random;

    public class Random3 {

        public static void main(String[] args) {
            Random rand = new Random();
            System.out.println("rand.nextBoolean():" + rand.nextBoolean());
            byte[] buffer = new byte[16];
            rand.nextBytes(buffer);
            System.out.println(Arrays.toString(buffer));
            //生成0.0~1.0之间的伪随机double数
            System.out.println("rand.nextDouble():" + rand.nextDouble());
            //生成0.0~1.0之间的伪随机float数
            System.out.println("rand.nextFloat():" + rand.nextFloat());
            //生成平均值是 0.0,标准差是 1.0的伪高斯数
            System.out.println("rand.nextGaussian():" + rand.nextGaussian());
            //生成一个处于long整数取值范围的伪随机整数
            System.out.println("rand.nextInt():" + rand.nextInt());
            //生成0~26之间的伪随机整数
            System.out.println("rand.nextInt(26):" + rand.nextInt(26));
            //生成一个处于long整数取值范围的伪随机整数
            System.out.println("rand.nextLong():" +  rand.nextLong());
        }

    }

    在这种方法下,相同”种子(seed)”的Random对象会生成相同的随机数,下面是例子

    package test;
    import java.util.Random;
    public class TestSeed {

        public static void main(String[] args) {
            // TODO Auto-generated method stub
             Random r1 = new Random(50);
                System.out.println("第一个种子为50的Random对象");
                System.out.println("r1.nextBoolean(): " + r1.nextBoolean());
                System.out.println("r1.nextInt(): " + r1.nextInt());
                System.out.println("r1.nextDouble(): " + r1.nextDouble());
                System.out.println("r1.nextGaussian(): " + r1.nextGaussian());
                System.out.println("---------------------------");
                
                Random r2 = new Random(50);
                System.out.println("第二个种子为50的Random对象");
                System.out.println("r2.nextBoolean(): " + r2.nextBoolean());
                System.out.println("r2.nextInt(): " + r2.nextInt());
                System.out.println("r2.nextDouble(): " + r2.nextDouble());
                System.out.println("r2.nextGaussian(): " + r2.nextGaussian());
                System.out.println("---------------------------");
                
                Random r3 = new Random(100);
                System.out.println("种子为100的Random对象");
                System.out.println("r3.nextBoolean(): " + r3.nextBoolean());
                System.out.println("r3.nextInt(): " + r3.nextInt());
                System.out.println("r3.nextDouble(): " + r3.nextDouble());
                System.out.println("r3.nextGaussian(): " + r3.nextGaussian());
                
               
                Random r4 = new Random(System.currentTimeMillis());
                System.out.println("以当前时间为种子的Random对象");
                System.out.println("r3.nextBoolean(): " + r4.nextBoolean());
                System.out.println("r3.nextInt(): " + r4.nextInt());
                System.out.println("r3.nextDouble(): " + r4.nextDouble());
                System.out.println("r3.nextGaussian(): " + r4.nextGaussian());
        }

    }
    结果截图为

    所以通常以当前时间为”种子”的方法生成较好的随机数

    Random random=new Random(System.currenTimeMillis());

  • 相关阅读:
    团体程序设计天梯赛-练习集L1-002. 打印沙漏
    WUOJ-ACM :1003: 零起点学算法78——牛牛
    ZOJ-2965
    天梯赛-L1-018. 大笨钟
    代码哲学 摒弃“够用就行”的心态
    github 源码阅读
    Biopython SeqIO 读取序列文件,读取信息,写入序列
    Biopython 模块处理Seq序列 方法
    coursera 有比较丰富的生物信息等课程 win7 访问设置
    python 正则匹配 csv文件中特殊符号如■高风险 这样的black block
  • 原文地址:https://www.cnblogs.com/xcl666/p/9801246.html
Copyright © 2011-2022 走看看