| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖
标题:求助,帮忙看一下,这个程序在VC++6.0平台上怎么改
取消只看楼主 加入收藏
lonelycorner
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-4-7
结帖率:0
收藏
已结贴  问题点数:10 回复次数:2 
求助,帮忙看一下,这个程序在VC++6.0平台上怎么改

#define IADD   453806245
#define IMUL   314159269
#define MASK   2147483647
#define SCALE  0.4656612873e-9
int randSeedP = 17;
void InitRand (int randSeedI)
{
  struct timeval tv;
  if (randSeedI != 0) randSeedP = randSeedI;
  else {
    gettimeofday (&tv, 0);
    randSeedP = tv.tv_usec;
  }
}
real RandR ()
{
  randSeedP = (randSeedP * IMUL + IADD) & MASK;
  return (randSeedP * SCALE);
}
#if NDIM == 2                  //变量NDIM表示二维情形下
void VRand (VecR *p)
{
  real s;                        //自定义数据类型typedef double real
  s = 2. * M_PI * RandR ();
  p->x = cos (s);
  p->y = sin (s);
}
#elif NDIM == 3
void VRand (VecR *p)
{
  real s, x, y;
  s = 2.;
  while (s > 1.) {
    x = 2. * RandR () - 1.;
    y = 2. * RandR () - 1.;
    s = Sqr (x) + Sqr (y);
  }
  p->z = 1. - 2. * s;
  s = 2. * sqrt (1. - s);
  p->x = s * x;
  p->y = s * y;
}
#endif
搜索更多相关主题的帖子: void return MASK 
2013-04-07 10:26
lonelycorner
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-4-7
收藏
得分:0 
回复 2楼 邓士林
嗯,不好意思,忘说清楚了:这个只是main函数中的一部分,目的应该是产生(0,1)之间的随机数。然后由VRand函数产生任意方向的单位向量。
这个是Unix平台上的代码,如果用<time.h>,那部分产生随机数的代码怎么改?
2013-04-07 10:58
lonelycorner
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-4-7
收藏
得分:0 
回复 4楼 wp231957
我如果这样改,这部分源程序和原来的功能一样么?假定头文件都已包含在main主程序内
#define M_PI 3.1415926
real RandR ()
{
  int seed;
  double d;
  seed=time(0);
  srand((unsigned int)seed);
  d=rand()/(double)RAND_MAX;
  return d;
}
#if NDIM == 2
void VRand (VecR *p)
{
  real s;
  s = 2. * M_PI * RandR ();
  p->x = cos (s);
  p->y = sin (s);
}
#elif NDIM == 3
void VRand (VecR *p)
{
  real s, x, y;
  s = 2.;
  while (s > 1.) {
    x = 2. * RandR () - 1.;
    y = 2. * RandR () - 1.;
    s = Sqr (x) + Sqr (y);
  }
  p->z = 1. - 2. * s;
  s = 2. * sqrt (1. - s);
  p->x = s * x;
  p->y = s * y;
}
#endif
2013-04-07 11:30
快速回复:求助,帮忙看一下,这个程序在VC++6.0平台上怎么改
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016507 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved