Я написал код случайного блуждания на языке c. Программа компилируется отлично, и я вижу результаты в консоли code :: blocks. Но мне нужно создать файл .dat для импорта его данных и построить график зависимости «числа итераций от среднего квадратного смещения» в qtgrace.
Проблема в том, что code :: blocks создает .dat файл, но он пуст. Я не знаю, почему это происходит.
Это мой код:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
FILE *fp;
int c,i;//c is the number of walkers and i is the iterations number
double x,r; //x is the displacement and r is a random number
double s[2000]; //array for the displacement squared
int n[10]; //array for the number of walkers
double main(){
fp=fopen("caminata.dat","w");
printf("Write the iterations number i=");
scanf("%d",&i);
printf("Write the number of walkers c=");
scanf("%d",&c);
n[10]=0;
s[2000]=0;
for (int j=0; j<c; j++){
//srand((long)time((time_t *)(NULL)));
x=0.;
for(int k=0; k<i; k++){
r=rand()/(double)RAND_MAX;
if(r<=0.5){
x=x+1;
}
if(r>0.5){
x=x-1;
}
s[k]=s[k]+x*x;//
}
}
for (int k=0; k<i; k++){//mean of the square displacement
s[k]=s[k]/c; //divided by the number of walkers
printf("\n%d %lf",k,s[k]);
fprintf(fp, "\n%d %lf",k,s[k]);
}
fclose(fp);
}
Это график, который я должен получить
Random_Walk: количество итераций против среднего квадрата смещения