C语言初学者求助 关于随机数生成函数int rand(void)的具体用法

我只知道int rand(void)可生成一个0至RAND_MAX的随机整数,rand函数与RAND_MAX定义在stdlib.h文件中。如果定义两个浮点数x,y,要生成n个随机点坐标(x,y),而且x,y都在0~1之间,具体要怎么写?

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
srand(time(0));//设置随机种子,保证每次运行程序,获取的随机数都不一样
double x,y;//浮点数x,y
int a,b,n,i;//整型a,b用于获取随机整数,n是坐标个数
scanf("%d",&n);//输入n
for(i=0;i<n;i++)
{
a = rand()%101;//把获取的随机数分成101份,即a的值是0,1,……,100
b = rand()%101;//同a
x = a*1.0/100;//转成浮点数
y = b*1.0/100;//同上
printf("(%.2lf %.2lf)\n",x,y);//输出即可
}
}

程序结果如下:

如果你想让得到的x,y的取值是一位小数,可以把程序里的101,100改成11,10即可

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-17
srand(0);
const int precision = 10;
for(int i = 0; i < n; ++i)
{

int iRandX = rand();
int iRandY = rand();
float x = 1.0*(iRandX%precision)/precision;
float y = 1.0*(iRandY%precision)/precision;
if( 0 == x )
x = 1.0/precision;
if( 0 == y )
y = 1.0/precision;

//保存y x
//precision可以调整精度值
}
第2个回答  2014-01-17
定义数组,然后用如下代码来赋值
rand()*1.0/RAND_MAX
第3个回答  2014-01-17
x=rand(0,100)/100;
y=rand(0,100)/100;
相似回答