zoukankan      html  css  js  c++  java
  • java 语言实现的随机数生成算法

    ----------------------疯狂软件java培训分享---------------------

      广州疯狂软件学院拥有三大课程体系包括:java课程,android课程,ios课程,疯狂软年终钜惠,报名java就业班,免费赠送基础班,名额有限,本月火热报名中,欢迎有志之士电话或者QQ咨询。

      package MyMath;

      import java.util.Random;

      //生成随机数 调用的是系统的方法

      public class random {

      public static void main(String args[])

      {

      Random random=new Random(5);

      for(int i=0;i<10;i++)

      {

      System.out.println(random.nextInt());

      }

      }

      }

      引用java 类库的实现方法

      下面自己写随机,了解一下种子数,其实对同一个种子生成的随机数是相同的,但是种子数是不对更新的

      package MyMath;

      public class random1 {

      public static void main(String args[])

      {

      double []r=new double[2];

      r[0]=5.0;

      for(int i=0;i<10;i++)

      {

      System.out.println(rand1(r));

      }

      }

      public static double rand1(double []r)

      {

      double temp1,temp2,temp3,p,base;

      base=256.0;

      int a=17,b=139;

      temp1=r[0]*17+139;

      temp2=(int)(temp1/256);

      temp3=temp1-temp2*base;

      r[0]=temp3;

      p=temp3/256;

      return p;

      //基本思想 就是 递推法 r[i]=mod(a*r[i-1],base); 随机数 p=r[i/base;

      //这个随机数 确实是随机的 但是缺陷就是它并不符合 正态分布 种子的选取会影响后来的分布的

      }

      }

      引用一些公式就实现了符合正态分布的

      public class random2 {

      public static void main(String args[])

      {

      double []r=new double[2];

      r[0]=5.0;

      for(int i=0;i<10;i++)

      {

      System.out.println(randZT(2.0,3.5,r));

      }

      }

      //符合正态分布的随机算法

      public static double rand1(double []r)

      {

      double temp1,temp2,temp3,p,base;

      base=256.0;

      int a=17,b=139;

      temp1=r[0]*17+139;

      temp2=(int)(temp1/256);

      temp3=temp1-temp2*base;

      r[0]=temp3;

      p=temp3/256;

      return p;

      //基本思想 就是 递推法 r[i]=mod(a*r[i-1],base); 随机数 p=r[i/base;

      //这个随机数 确实是随机的 但是缺陷就是它并不符合 正态分布 种子的选取会影响后来的分布的

      }

      public static double randZT(double u,double t,double []r)

      {

      int i;

      double total=0.0;

      double result;

      for(i=0;i<12;i++)

      {

      total+=rand1(r);

      }

      result=u+t*(total-6.0);

      return result;

      }

      }

      疯狂软件java培训、ios培训新年钜惠,报名Java就业班免费赠送java基础班,报名iOS就业班免费赠送iOS基础班,本月火速抢座中,为回报广大新老学员,值此新年之际推出报读就业班赠送基础班的活动

      -----------------------------------2014年初活动--------------------------------------

      疯狂软件Java学习班方向:

      1.报读JavaEE就业班赠送基础班课程。

      2.开班一次性(一个月内)交清JavaEE就业班学费,赠送基础班全套课程。

      疯狂软件iOS学习班方向:

      1.报读iOS应用+手游就业班赠送iOS基础班课程。

      2.开班一次性(一个月内)交清iOS应用+手游就业班就业班学费,赠送基础班全套课程。

  • 相关阅读:
    [HNOI2002]营业额统计
    HDU 1374
    HDU 3345
    HDU 2089
    Graham扫描法
    Codeforces 1144D Deduction Queries 并查集
    Codeforces 916E Jamie and Tree 线段树
    Codeforces 1167F Scalar Queries 树状数组
    Codeforces 1167E Range Deleting
    Codeforces 749E Inversions After Shuffle 树状数组 + 数学期望
  • 原文地址:https://www.cnblogs.com/gojava/p/3528504.html
Copyright © 2011-2022 走看看