// 
// Torbert, 15 Sept 2011
// 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "mpi.h"
// 
int main(int argc, char* argv[])
{
	int		    rank,size;
	MPI_Status   status;
	int		    k,tag=0;
	double	    val;
	FILE*        fout;
	char         fname[20];
	//
	MPI_Init(&argc,&argv);
	MPI_Comm_size(MPI_COMM_WORLD,&size);
	MPI_Comm_rank(MPI_COMM_WORLD,&rank);
	//
	if(rank==0)
	{
		srand(time(NULL));
		//
		for(k=1;k<size;k++)
		{
			val=(rand()%1000)/1000.0;
			printf("%d %f\n",k,val);
			MPI_Send(&val,1,MPI_DOUBLE,k,tag,MPI_COMM_WORLD);
		}
	}
	else
	{
		MPI_Recv(&val,1,MPI_DOUBLE,0,tag,MPI_COMM_WORLD,&status);
		//
		sprintf(fname,"file%04d.txt",rank);
		//
		fout=fopen(fname,"w");
		fprintf(fout,"Rank %d\n",rank);
		fprintf(fout,"%f\n",val);
		fclose(fout);
	}
	//
	MPI_Finalize();
	//
	return 0;
}
// 
// end of file
// 

