代码之家  ›  专栏  ›  技术社区  ›  Hendrik

用Java生成威布尔分布值

  •  1
  • Hendrik  · 技术社区  · 12 年前

    我是Java新手,我想创建一个威布尔分布随机值。

    我尝试使用umontreal.iro.lecuyer.randvar包中的WeibullGen类,但有点卡住了。
    我试过下面这样的方法,但显然不起作用。

    for(int i=0;i<5;i++){
        int result = WeibullGen.nextDouble(RandomStream s ,1.0,1.0,1.0);
        if(result>0) System.out.println(result);
    }
    

    我的问题是我不知道如何创建流。我很确定这不会那么难,但我真的很难找到自己的路。

    2 回复  |  直到 12 年前
        1
  •  4
  •   Richard    12 年前

    为每个生成的随机数创建一个新的流不是一个好主意。最好只使用一个这样的流:

    RandomStream stream = new MRG32k3a();
    for(int i=0;i<5;i++) {
       int result = WeibullGen.nextDouble(stream, alp, lam,1.0);
       System.out.println(result);
    }
    
        2
  •  1
  •   fvrghl    12 年前

    创建 Stream 内联,您可以这样做:

    for(int i=0;i<5;i++){
        int result = WeibullGen.nextDouble(new RandomStream(),1.0,1.0,1.0);
        if(result>0) System.out.println(result);
    }
    

    在Java中,您必须使用 new 关键字。