我想在圆 (x-1)^2+y^2=1 随机取一些点,然后写出了如下代码,各位看看我的这个做法能保证随机嘛?
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<math.h>
#define N 20
double defY(double x);//函数声明
void FileInput(double x,double y);//函数声明
int main()
{
srand(time(NULL));
double x=0;//x初始化
double y=0;//y初始化
for(int i=0;i<N;i++)
{
x=2*rand()/((double)RAND_MAX);//x为0到2的随机数
y=defY(x);//定义y
FileInput(x,y);
}
printf("Completed!\n");
return 0;
}
void FileInput(double x,double y)//将所得的随机点(x,y)写入文件
{
FILE *f;
f=fopen("F:\\Data.txt","a");
fprintf(f,"%6.5f,%6.5f\n",x,y);
fclose(f);
}
double defY(double x)//返回x对应的圆上的y值(double型)
{
double temp=1-(x-1)*(x-1);
int flag=rand()%2;
if(flag==0) return sqrt(temp);
if(flag==1) return (-1)*sqrt(temp);
}
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<math.h>
#define N 20
double defY(double x);//函数声明
void FileInput(double x,double y);//函数声明
int main()
{
srand(time(NULL));
double x=0;//x初始化
double y=0;//y初始化
for(int i=0;i<N;i++)
{
x=2*rand()/((double)RAND_MAX);//x为0到2的随机数
y=defY(x);//定义y
FileInput(x,y);
}
printf("Completed!\n");
return 0;
}
void FileInput(double x,double y)//将所得的随机点(x,y)写入文件
{
FILE *f;
f=fopen("F:\\Data.txt","a");
fprintf(f,"%6.5f,%6.5f\n",x,y);
fclose(f);
}
double defY(double x)//返回x对应的圆上的y值(double型)
{
double temp=1-(x-1)*(x-1);
int flag=rand()%2;
if(flag==0) return sqrt(temp);
if(flag==1) return (-1)*sqrt(temp);
}