Aritalab:Lecture/Programming/Java/Random

From Metabolomics.JP
Jump to: navigation, search

乱数の作成

Java プログラムで乱数を発生させるには Random クラスを使います。

import java.util.Random;

public class RandomWalk
  {
    int max = 100;
    int[] result = new int[max];
    Random rand = new Random();

    void binomial(double p)
      { // 二項分布を作る関数
        for (int k = 0; k < max * 10; k++)
          { // 施行を max * 10 回繰り返す
            int n = 0;
            // 確率 p で +1, (1-p)で -1 を max/2 ステップ
            for (int i = 0; i < max / 2; in;
              else
                --n;
            result[n + max / 2 - 1])
          sb.append(c);
        return sb.toString();
      }

    void print()
      { // プリントアウト
        int line = 20; // 全体を20行で表示
        for (int i = 0; i < line; i++)
          {
            int sum = 0;
            for (int j = (i * max) / line; j < ((i + 1) * max)
                / line; j++)
              sum += result[j];
            if (sum / 10 == 0)
              continue;
            String s = makeString('*', sum / 10);
            System.out.println(i + ":" + s);
          }
      }

    static public void main(String[] args)
      {
        RandomWalk rw = new RandomWalk();
        rw.binomial(0.5);
        rw.print();
      }
  }

Random クラスは以下のメソッドを備えています。

  • nextInt() ランダムな整数を生成
  • nextInt(int n) 0 から n までのランダムな整数を生成
  • nextDouble(), nextFloat() 0 から 1 の間でランダムな実数を生成
  • nextGaussian() 平均 1, 分散 1 の正規分布に従う乱数を生成

最初に

Random R = new Random();

としてRandom クラスの実体を一つ作成し、R に対して上記のメソッドを繰り返し適用して乱数を発生させます。 上のプログラムは 50 ステップのランダムウォークを 1000 回繰り返し、結果を 5 行ずつまとめて積算して表示しています。

Personal tools
Namespaces

Variants
Actions
Navigation
metabolites
Toolbox