1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#define N 1000
#define DX 1
void RandomPath(int r2[],double av_r2[]){
int x=0,i;
double k;
for(i=0;i<N;i++){
k=(double)rand()/(double)RAND_MAX;
if(k<0.5)
x=x+DX;
if(k>=0.5)
x=x-DX;
r2[i]=x*x;
av_r2[i]=av_r2[i]+r2[i];
}
}
void PrintResults(double av_r2[]){
int i;
FILE*fp;
char filename[20];
char numbers[8]={'1','2','3','4','5','6','7','8'};
sprintf(filename,"sqm_DX_%c.dat",numbers[DX-1]);
fp=fopen(filename,"w");
for(i=0;i<N;i++){
fprintf(fp,"%4i %5.5lf\n",i+1,av_r2[i]/(DX*DX));
}
fclose(fp);
}
int main(){
int M,i,j,k=0,r2[N];
double av_r2[N];
srand(time(NULL));
printf("Inserire il numero dei colloidi: "); // It means: insert number of colloids
do{
scanf("%i",&M);
if(M<=0)
printf("Inserire un valore positivo: "); // it means: insert a positive number
}
while(M<=0);
for(i=0;i<N;i++){
r2[i]=0;
av_r2[i]=0.0;
}
for(i=0;i<M;i++){
RandomPath(r2,av_r2);
for(j=0;j<N;j++){
av_r2[j]=av_r2[j]/N;
}
}
PrintResults(av_r2);
}
|