关于游戏中的随即数算法,该怎么处理

关于游戏中的随即数算法
大家先看看这个程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
class   clRandom
{
protected:
    int   mRange;
    int   mIndex;
    int   *mTable;
    bool   mAutoGenerate;
public:
    clRandom(unsigned   int   Range,bool   AutoGen=false):mRange(Range),mTable(NULL),mIndex(0),mAutoGenerate(AutoGen)
{
    srand((unsigned)time(NULL));
    mRange   =   Range;
    mTable   =   new   int   [mRange];
    Generate();
}
virtual   ~clRandom()
{
    if(mTable   !=   NULL)
    {     delete[]   mTable;
          mTable   =   NULL;
    }
    mRange   =   0;
}
int   GetNumber()
{
    int   Number   =   -1;
    if(mRange> 0)
    {
          Number   =   mTable[mIndex];
          ++mIndex;
          if(mIndex   > =   mRange)
          {     mIndex   =   0;    
                    if(mAutoGenerate){
                          Generate();
                      }
          }
      }
      return   Number;

}
void   Generate()
{
    int   loop,offset;
    for(loop=0;loop <mRange;loop++)
    {
          mTable[loop]   =   loop;
    }
for(loop=0;loop <mRange;loop++)
{
    int   temp;
    offset=(rand()%mRange)+loop;
    if(offset   > =   mRange)
    {
          offset=offset-mRange;
    }
    temp=mTable[loop];
    mTable[loop]=mTable[offset];
    mTable[offset]=temp;
  }
    mIndex=0;
  }
};
int   main()
{
    clRandom   *RandMaker;
    int   loop,Range=20;
    RandMaker=new   clRandom(Range);
    for(loop=0;loop <Range;loop++)
    {
          printf( "%d ",RandMaker-> GetNumber());
    }
    printf( "\n\n ");
  RandMaker-> Generate();
}
return   0;
}

这里在main()函数里面

clRandom   *RandMaker;
    int   loop,Range=20;
    RandMaker=new   clRandom(Range)
能解释一下吗?
为什么不能直接写成   clRandom   RandMaker(Range)   呢       然后利用RandMaker.     函数解决呢   ?

------解决方案--------------------
判断一下 作用域 ~

如果局部对象可以,
使用局部对象自然也是可以的 ~

但是,
显然,
使用 new 生成对象,
也完全可以 ~
------解决方案--------------------
这世界面正是有无数的可能,而无限精彩.