Aritalab:Lecture/Programming/Java/Random
From Metabolomics.JP
< Aritalab:Lecture | Programming | Java(Difference between revisions)
m (Created page with "==乱数の作成== Java プログラムで乱数を発生させるには Random クラスを使います。 <pre> import java.util.Random; public class RandomWalk { int...") |
m |
||
| Line 64: | Line 64: | ||
* nextInt(int n) 0 から n までのランダムな整数を生成 | * nextInt(int n) 0 から n までのランダムな整数を生成 | ||
* nextDouble(), nextFloat() 0 から 1 の間でランダムな実数を生成 | * nextDouble(), nextFloat() 0 から 1 の間でランダムな実数を生成 | ||
| + | * nextGaussian() 平均 1, 分散 1 の正規分布に従う乱数を生成 | ||
最初に | 最初に | ||
| Line 69: | Line 70: | ||
Random R = new Random(); | Random R = new Random(); | ||
| − | としてRandom クラスの実体を一つ作成し、R | + | としてRandom クラスの実体を一つ作成し、R に対して上記のメソッドを繰り返し適用して乱数を発生させます。 |
| + | 上のプログラムは 50 ステップのランダムウォークを 1000 回繰り返し、結果を 5 行ずつまとめて積算して表示しています。 | ||
Revision as of 14:02, 26 May 2011
乱数の作成
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 行ずつまとめて積算して表示しています。