两段程序的差别 本帖最后由 taotao714 于 2010-04-07 21:21:10 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.很想知道你RAND_MAX是多少?按理说不需要循环啊2.char *ch=new char[m];是指在堆上分配m个char型的空间,用ch指向这个空间 char *ch=new char[m];在你的程序里面,没写用在哪里.属于动态分配一个大小为 m 的 char 数组.回2楼,RAND_MAX 是 0x7fff 在 stdlib.h 里有写,是rand函数生成的随机数的最大值. 产生随机数不需要循环,循环就是让随机会多些。new用来在堆上动态分配内存。程序2你没有循环,只调用了一次,然后还有几个值吗? 那char *ch=new char[m];这句需要吗?有人说这句不需要。 char *ch=new char[m];可以注释掉同意楼上,多试几次 楼主的问题是某段时间,一直结果是2,某段时间,一直结果是3,再看你的程序,发现这是正常的.因为你的求随机的代码有问题.你只运行一次,而之前是以时间为种子,我试过一下srand((unsigned)time(NULL));int a = rand(); 这样得出来的值,会随着时间的推移慢慢加大.而你这个代码.某个大区间是2,而某个大区间是3.n=1+(int)((rand()/(double)RAND_MAX)*3);试试改成求余的方法吧.n=1+(rand()%3); 试过是可行的 关于ClientToScreen得到的坐标不对的问题 mfc中如何使得视图滚动到所选控件的位置 调用zip32j.dll压缩文件 请问一个标识符的意思 高人请进来谈谈嵌入程序中的ACTIVEX控件的升级问题 vc.net中哪个软件是用来打包VC 源程序的 线程终止问题 關於接收數據的奇怪問題... win+d 显示桌面消息在VC中如何拦截处理? 新手求助-用VC改IP-怎么定义变量 如何设置子菜单高亮? 如何用C/C++语言 比较 某文件中 2个 png图片 是否完全相同的2张?
2.char *ch=new char[m];是指在堆上分配m个char型的空间,用ch指向这个空间
在你的程序里面,没写用在哪里.
属于动态分配一个大小为 m 的 char 数组.回2楼,RAND_MAX 是 0x7fff 在 stdlib.h 里有写,是rand函数生成的随机数的最大值.
new用来在堆上动态分配内存。
程序2你没有循环,只调用了一次,然后还有几个值吗?
同意楼上,多试几次
因为你的求随机的代码有问题.你只运行一次,而之前是以时间为种子,我试过一下
srand((unsigned)time(NULL));
int a = rand(); 这样得出来的值,会随着时间的推移慢慢加大.
而你这个代码.某个大区间是2,而某个大区间是3.
n=1+(int)((rand()/(double)RAND_MAX)*3);试试改成求余的方法吧.
n=1+(rand()%3); 试过是可行的