首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

rand()随机生成数据有关问题

2013-11-25 
rand()随机生成数据问题本帖最后由 u012797295 于 2013-11-22 21:27:15 编辑#include iostream.h#includ

rand()随机生成数据问题
本帖最后由 u012797295 于 2013-11-22 21:27:15 编辑 #include <iostream.h>
#include <time.h>
#include <stdlib.h>
void main()
{
int i,n,
double data[101];
cin>>n;
srand(time(NULL));

for(i=1;i<n+1;i++)
*(data+i)=28+rand()%10/4.0; //随机生成数据,定义data数组为double类型,
                                            //为什么生成的全是整数呢?
    //把4.0改为4,有什么不同吗?怎么才能生成小数?
for(i=1;i<n+1;i++)
cout<<data[i]<<" ";
cout<<endl<<endl;


}
[解决办法]
rand函数返回的是整型,要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。

引用:
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
void main()
{
int i,n,
double data[101];
cin>>n;
srand(time(NULL));

for(i=1;i<n+1;i++)
*(data+i)=28+rand()%10/4.0; //随机生成数据,定义data数组为double类型,
                                            //为什么生成的全是整数呢?
    //把4.0改为4,有什么不同吗?怎么才能生成小数?
for(i=1;i<n+1;i++)
cout<<data[i]<<" ";
cout<<endl<<endl;


}

[解决办法]
一个是整除一个是除
1/3=0
1.0/3.0=0.3333
[解决办法]
rand函数返回的是整型。

除法的结果类型则是由两边的操作数类型决定的。如果类型不一致会进行类型提升,否则结果类型不变。
提升规则一般是:
 1、为防止精度损失,如果必要的话,类型总是被提升为较宽的类型 
 2、所有小于整型的类型在计算之前都会被转换成整型
 3、计算出结果后再转为左值类型并赋给左值

热点排行