萌新求助!关于c++rand()用法

qq_40955618 2018-03-15 09:20:25
#include<iostream>
#include<ctime>
#include<cmath>
#define RAND_MAX 0x7fff
using namespace std;
double jyfb()//均匀分布
{
srand(time(NULL));
double a= double(rand())/ RAND_MAX;
return a;
}


double zxjxsf(double u,double t)//中心极限算法
{
double a=jyfb();
a=u+a*(t-u);
return a;
}
double BOX_MULLER(double u,double t)//BOX_MULLER算法
{

double a=jyfb();
double b=jyfb();
double x=sqrt(-2*log(a))*cos(2*3.141592*b);
return x;
}
void main()
{ int u=2.0,t=3.5;
for(int i=0;i<100;i++)
/*cout<<zxjxsf(u,t);
cout<<endl;*/
cout<<BOX_MULLER(u,t)<<endl;
system("pause");
}
为什么每次运行都只有100个相同的数呢不是应该100个不一样的数吗?
每次运行都是这样
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
2.57756
...全文
349 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40955618 2018-03-16
  • 打赏
  • 举报
回复
谢谢两位大神的回答我也懂了srand()和rand()的用法真的感谢!
自信男孩 2018-03-16
  • 打赏
  • 举报
回复
种子是一样的,因此会得到相同的数据
double jyfb()//均匀分布
{ 

double a= double(rand())/ RAND_MAX;
    return a;
}


double zxjxsf(double u,double t)//中心极限算法
{ 
double a=jyfb();
a=u+a*(t-u);
return a;
}
void main()
{  
srand(time(NULL));
 int u=2.0,t=3.5;
for(int i=0;i<100;i++)
/*cout<<zxjxsf(u,t);
cout<<endl;*/
cout<<BOX_MULLER(u,t)<<endl;
system("pause");
}
这样试试
paschen 2018-03-15
  • 打赏
  • 举报
回复

#include<iostream>
#include<ctime>
#include<cmath>
#define RAND_MAX 0x7fff
using namespace std;
double jyfb()//均匀分布
{

double a = double(rand()) / RAND_MAX;
return a;
}


double zxjxsf(double u, double t)//中心极限算法
{
double a = jyfb();
a = u + a*(t - u);
return a;
}
double BOX_MULLER(double u, double t)//BOX_MULLER算法
{

double a = jyfb();
double b = jyfb();
double x = sqrt(-2 * log(a))*cos(2 * 3.141592*b);
return x;
}
void main()
{
srand(time(NULL));
int u = 2.0, t = 3.5;
for (int i = 0; i < 100; i++)
/*cout<<zxjxsf(u,t);
cout<<endl;*/
cout << BOX_MULLER(u, t) << endl;
system("pause");
}
paschen 2018-03-15
  • 打赏
  • 举报
回复
srand只需要执行一次,把他放在最前面,否则运行时间很短,每次重初始结果是一样的

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧