一维随机游走预期值
1D Random Walk Expected Value
我在C++和Python中实现了一维随机游走;但是,在这两个程序中,期望值不是sqrt(N(。我想知道我的代码中是否存在逻辑错误或某些隐藏因素,使我的结果始终较低。
对于那些不熟悉随机游走的人,预期的 RMS 值是 sqrt(N(。更多信息在这里找到: http://www.mit.edu/~kardar/teaching/projects/chemotaxis(AndreaSchmidt(/random.htm
我一直得到大约 80% 的 sqrt(N(,例如:
N = 100,结果 = 80,79,81,78...
N = 25, 结果 = 3.9, 4.1, 4.2, 3.8...
代码如下:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <math.h>
float random_walk(int i);
float checkrand(int i);
using namespace std;
int main(int argc, char* argv[]){
srand(time(NULL));
float absolute = 0;
int trials = 1000;
for(int i=0; i<trials; i++){
absolute += sqrt(pow(random_walk(atoi(argv[1])),2));
}
cout<<absolute/trials<<endl;
}
float random_walk(int i){
float walk = 0;
for(int j=0; j<i; j++){
if(rand()%2 == 0){
walk--;
}
else{
walk++;
}
}
return walk;
}
我的 python 代码也得到了相同的输出。
import random
def rand_walk():
walk = 0
for i in range(9):
rand = random.randint(0,1)
if(rand == 0):
walk = walk + 1
else:
walk = walk - 1
return walk
absolute = 0.0
numtrial = 100
for j in range(numtrial):
walk = rand_walk()
absolute = absolute + (walk**2)**(1/2.0)
print "Average Absolute Distance ", absolute/numtrial
我希望得到sqrt(n(,但总是得到更少,这让我怀疑我是否做错了什么或想错了问题。
我主要使用Python,所以我会用这种语言来回答。
你用 absolute = absolute + (walk**2)**(1/2.0)
计算的是 sqrt(d^2( 的总和,但你必须取的意思是 RMS 在 sqrt 之前的意思。
d2_list = []
for j in range(numtrial):
walk = rand_walk(N)
# absolute = absolute + (walk**2)**(1/2.0)
d2_list.append(walk**2)
result = (sum(d2_list) / len(d2_list))**(1/2.)
print "Average Absolute Distance ", result
相关文章:
- 如何将三维尺寸不固定的三维阵列展平为一维阵列
- STL算法函数在多个一维容器上的使用
- 将二维数组的所有元素插入到一维数组中
- C++语法差异:二维和一维数组(指针算术)
- 将一维数组写入 CSV C++中的不同列?
- C++:将矩阵存储在一维数组中
- 当表示为对象的一维向量时,有效地旋转 NxM 矩阵 (C++)
- 如何在一维数组中的每个元素中都有多个int值
- 以C++填充一维数组
- 一维阵列的运动检测(神经网络或其他选项?
- 编写所需的代码以创建动态一维整数数组
- 用于在一维数组上嵌套循环操作的正确 openmp 指令
- 使用两个不同大小的一维阵列制作 2D 阵列
- 如何在 <threads> c++ 中使用和一维数组进行矩阵乘法?
- C++按内存地址将多维数组更改为一维数组
- 在 c++ 中返回一维数组时出错
- 新的一个一维阵列,非常大,例如60000*60000
- 如何使用嵌套初始化构造函数中的一维向量初始化矩阵
- 一维随机游走预期值
- 如何在一维蜂窝自动程序中随机化字符串