随机游走是一个随机过程,粒子在结构化空间中从一个状态移动一个状态到一个状态。对于我们来说,状态空间是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