VC程序,为何单步执行没有问题,直接运行就有问题?

我在程序中用到了产生伪随机数的函数srand(time(NULL));num=(rand()%100)*0.01;单步运行直到结束输出的结果都是正确的,但是直接运行输出的... 我在程序中用到了产生伪随机数的函数
srand(time(NULL));
num = (rand()%100)*0.01;
单步运行直到结束输出的结果都是正确的,但是直接运行输出的结果有大部分相同
求大神
展开
 我来答
icecoobe
推荐于2016-08-05 · TA获得超过1989个赞
知道小有建树答主
回答量:1058
采纳率:100%
帮助的人:1108万
展开全部
你这段代码是不是放在循环里的?

你要知道这两个函数的工作原理.
rand是利用系统提供的种子seed来得出伪随机数序列的. 它根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。

srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同.
======>>>>>
从而实现真正意义上的“随机”(还是伪随机)

如果srand的参数每次都不变,那么系统提供的种子值也不会变,最终rand的效果 .....

虽然,你以系统时间作为参数传递给srand, 如果你的代码放在循环中,那么每次循环的时候,时间的间隔是非常非常短的,time函数得出的值几乎一致, 最终srand没有影响到系统提供的种子值, 最终rand的效果 ......
调试的话, 因为单步运行间隔时间长, 故而time得出的值也不同;
你可以在你的循环中,添加sleep试试
更多追问追答
追问
是放在循环外啊,也尝试添加Sleep(100)还是不行啊?
求大神指教
追答
你贴出完整点的代码吧,要看你的使用场景,不然没针对性
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式