隨機遊走是一個隨機過程,粒子在結構化空間中從一個狀態移動一個狀態到一個狀態。對於我們來說,狀態空間是Z,整數集合。粒子以初始狀態S [0]∈Z開始。如果i≥0步後粒子處於狀態S [i],那麼在步驟i + 1中,它移動到狀態S [i] +1概率p,並以概率q表示狀態S [i] - 1;它不能靜止不動。當然,p + q = 1。如果S [0] = 5並且0,則序列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++;
}
}
有些東西似乎不過是想錯了,所以我堅持。
編輯:謝謝你們,不知何故,我沒有看到那個分號。
// ------------------------------------------- ---------------------------------------------
編輯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++;
究竟是什麼問題? – 2012-02-07 02:27:08
它只打印出一個值。我需要它打印出粒子的所有值,直到nSteps等於numSteps! – helloimbarbara 2012-02-07 02:28:44