标题:求助,帮忙看一下,这个程序在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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-403193-1-1.html




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

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