问题描述
代码如下stringcol="";stringcolor=“”;for(inti=0;i<7;i++){col=cs.randomcolor();color=color+"颜色"+i+"为:"+col;}cs.randomcolor调用会返回一个颜色的string运行时候7个颜色都是一样但是在color=这行加断点一句句调试又会有不同颜色求问这是什么情况,怎么解决?
解决方案
解决方案二:
伪随机呗你断点了,所以相隔了一段时间了,然后随机数不一样了,所以颜色不一样了
解决方案三:
因为随机数和系统时间有关。把随机数的Randomr=newRandom拿到循环外
解决方案四:
for循环里面的random会取到一样的数,这个情况很常见。最笨也是最简单的处理方法就是在random取到的随机数后面+循环参数i。但这个东西只能保证你取到不同的数,但实际没啥用意义,就是一个随机数+i
解决方案五:
Randomrnd=newRandom(DateTime.Now.MilliSecond);实例化的时候使用这种方法实例化试试
解决方案六:
随机数放在循环中是会有问题的。
解决方案七:
引用4楼fxj805835819的回复:
Randomrnd=newRandom(DateTime.Now.MilliSecond);实例化的时候使用这种方法实例化试试
随机,其实是建立在CPU的时间值上的,如果速度够快生成的值完全是可能重复出现连续值。因此,随机方法有一个东西叫时间因子,只要能保证这个时间因子不会重复,那么就可以保证到随机值的生成。这就是所谓的假随机。4楼代码可以,但这应该更加完美Randomrnd=newRandom(Guid.NewGuid().GetHashCode());
解决方案八:
或者你直接这样:col=cs.randomcolor();Thread.Sleep(50);color=color+"颜色"+i+"为:"+col;
解决方案九:
该回复于2016-06-05 23:26:02被版主删除