Hello,

I have written a code for Random Walk in 1D for 1 particle. And I calculated its Mean square Density for 1 particle. Now I am trying to calculate the MSD for 10 particles, but I get something wrong. The value of MSD should increase when the particles are added. But unfortunately, I get almost the same numbers. Can anyone please have a look and see what is wrong with the code? here is the code:

Code:#include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #define N 100 /*flipping 100 times*/ #define T 10 /*for 10 particles*/ double rndm(void) { return(double)rand()/RAND_MAX; } /*Function to simulate random walk in 1D*/ double walk(int start) { double a; int i,x; x=start; for(i=0; i<N; i++) { a=rndm(); if(a<0.5) /*Choses which direction to move in*/ x++; else x--; } return x; } /*Main Function*/ int main () { FILE *fout; int i,j,start,random[N],x; double m; srand(time(NULL)); fout=fopen("Walk.txt", "w"); //Open The File printf("What would you like the initial x position to be?\n:"); scanf("%d", &start); //Define Start position for x for(j=1;j<=T;j++){ for(i=0; i<N; i++) { x=walk(start); // Generates Random Number random[i]=x; fprintf(fout, "%d\n", random[i]); // Writes Number To File } m+=(random[i]-start)*(random[i]-start); /*MSD for 10 particles*/ m=m/T; fprintf(fout, "The MSD for %d particle(s) is: %lf\n",j,m); } double p = 0; for (i=0; i<N; i++){ p+=(random[i]-start)*(random[i]-start);} p=p/N; fprintf(fout, "The MSD for 1 particle: %lf\n",p); /*Here I calculate MSD for 1 particle*/ fclose(fout); return 0; }