本帖最后由 taotao714 于 2010-04-07 21:21:10 编辑

解决方案 »

  1.   

    1.很想知道你RAND_MAX是多少?按理说不需要循环啊
    2.char *ch=new char[m];是指在堆上分配m个char型的空间,用ch指向这个空间
      

  2.   

    char *ch=new char[m];
    在你的程序里面,没写用在哪里.
    属于动态分配一个大小为 m 的 char 数组.回2楼,RAND_MAX 是 0x7fff 在 stdlib.h 里有写,是rand函数生成的随机数的最大值.
      

  3.   

    产生随机数不需要循环,循环就是让随机会多些。
    new用来在堆上动态分配内存。
    程序2你没有循环,只调用了一次,然后还有几个值吗?
      

  4.   

    那char *ch=new char[m];这句需要吗?有人说这句不需要。
      

  5.   

    char *ch=new char[m];可以注释掉
    同意楼上,多试几次
      

  6.   

    楼主的问题是某段时间,一直结果是2,某段时间,一直结果是3,再看你的程序,发现这是正常的.
    因为你的求随机的代码有问题.你只运行一次,而之前是以时间为种子,我试过一下
    srand((unsigned)time(NULL));
    int a = rand();   这样得出来的值,会随着时间的推移慢慢加大.
    而你这个代码.某个大区间是2,而某个大区间是3.
    n=1+(int)((rand()/(double)RAND_MAX)*3);试试改成求余的方法吧.
    n=1+(rand()%3);   试过是可行的