VC程序,为何单步执行没有问题,直接运行就有问题?
我在程序中用到了产生伪随机数的函数srand(time(NULL));num=(rand()%100)*0.01;单步运行直到结束输出的结果都是正确的,但是直接运行输出的...
我在程序中用到了产生伪随机数的函数
srand(time(NULL));
num = (rand()%100)*0.01;
单步运行直到结束输出的结果都是正确的,但是直接运行输出的结果有大部分相同
求大神 展开
srand(time(NULL));
num = (rand()%100)*0.01;
单步运行直到结束输出的结果都是正确的,但是直接运行输出的结果有大部分相同
求大神 展开
1个回答
展开全部
你这段代码是不是放在循环里的?
你要知道这两个函数的工作原理.
rand是利用系统提供的种子seed来得出伪随机数序列的. 它根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。
srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同.
======>>>>>
从而实现真正意义上的“随机”(还是伪随机)
如果srand的参数每次都不变,那么系统提供的种子值也不会变,最终rand的效果 .....
虽然,你以系统时间作为参数传递给srand, 如果你的代码放在循环中,那么每次循环的时候,时间的间隔是非常非常短的,time函数得出的值几乎一致, 最终srand没有影响到系统提供的种子值, 最终rand的效果 ......
调试的话, 因为单步运行间隔时间长, 故而time得出的值也不同;
你可以在你的循环中,添加sleep试试
你要知道这两个函数的工作原理.
rand是利用系统提供的种子seed来得出伪随机数序列的. 它根据这个种子的值产生一系列随机数。如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。
srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同.
======>>>>>
从而实现真正意义上的“随机”(还是伪随机)
如果srand的参数每次都不变,那么系统提供的种子值也不会变,最终rand的效果 .....
虽然,你以系统时间作为参数传递给srand, 如果你的代码放在循环中,那么每次循环的时候,时间的间隔是非常非常短的,time函数得出的值几乎一致, 最终srand没有影响到系统提供的种子值, 最终rand的效果 ......
调试的话, 因为单步运行间隔时间长, 故而time得出的值也不同;
你可以在你的循环中,添加sleep试试
更多追问追答
追问
是放在循环外啊,也尝试添加Sleep(100)还是不行啊?
求大神指教
追答
你贴出完整点的代码吧,要看你的使用场景,不然没针对性
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询