ランダムウォークは、構造化された空間内の状態から状態へ一度に1ステップずつ移動する確率的プロセスです。私たちのために、状態空間はZ、整数の集合になります。パーティクルは初期状態S [0]∈Zで始まり、i≥0ステップ後にパーティクルは状態S [i]にあり、ステップi + 1で状態S [i] + 1に移動します確率pで状態S [i] -1を確率qで表す。それはまだ立つことができません。もちろん、p + q = 1であり、S [0] = 5および0 < p < 1の場合、配列5,4,3,4,3,2,3,2,3,4は、パーティクルが9回動いた場合の状態Javaでのランダムウォーク
与えられたステップ数のランダムウォークをシミュレートし、ランダムウォークの特定の統計を計算するプログラムを作成します。シミュレーションのためのパラメータは、(1)初期状態S [0]; (2)pの値。 (3)シミュレートするステップ数。
注:私はこれをJavaで書いています。
public static void main(String[] args) {
Random rand = new Random();
int iState = rand.nextInt();
int particle = iState;
double pValue = 0.60;
int numSteps = rand.nextInt() + 1;
int nSteps = 0;
if (numSteps>=0) {
System.out.println(particle);
while (nSteps<numSteps); {
if (rand.nextDouble() < pValue)
particle++;
else
particle--;
System.out.println(particle);
nSteps++;
}
}
何かがが間違っているように見えるので、私はこだわっている: は、これまでのところ私が持っています。
EDIT:ありがとう、どういうわけか私はそのセミコロンをキャッチしませんでした。
// ------------------------------------------- ---------------------------------------------
編集2:さて、私は正しく動作するコードがあります。しかし、最終的には、最大値、最小値、平均値をリストアップすることになっています。これは、iStateの値ごとに新しい変数を作成せずに行うことができますか?私の新しいコードは
public static void main(String[] args) {
Random rand = new Random();
int iState = rand.nextInt();
double pValue = 0.60;
int numSteps = rand.nextInt(100) + 1;
int nSteps = 0;
if (numSteps>=0) {
System.out.println(iState);
while (nSteps<numSteps) {
if (rand.nextDouble() < pValue)
iState++;
else
iState--;
System.out.println(iState);
nSteps++;
正確には間違っていますか? –
これは1つの値を印刷するだけです。 nStepsがnumStepsに等しくなるまで、パーティクルのすべての値を出力する必要があります。 – helloimbarbara