c#循环赋值的问题

ttddlplp 2016-05-11 03:29:17
代码如下
string col = "";
string color = “”;
for (int i = 0; i < 7; i++)
{
col = cs.randomcolor();
color = color + "颜色" + i + "为:" + col;
}

cs.randomcolor调用会返回一个颜色的string

运行时候7个颜色都是一样

但是在color = 这行加断点一句句调试又会有不同颜色

求问这是什么情况,怎么解决?
...全文
257 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是飞云 2016-05-12
  • 打赏
  • 举报
回复
引用 4 楼 fxj805835819 的回复:
Random rnd = new Random(DateTime.Now.MilliSecond);实例化的时候使用这种方法实例化试试
随机,其实是建立在CPU的时间值上的,如果速度够快生成的值完全是可能重复出现连续值。因此,随机方法有一个东西叫时间因子,只要能保证这个时间因子不会重复,那么就可以保证到随机值的生成。这就是所谓的假随机。 4楼代码可以,但这应该更加完美
Random rnd = new Random(Guid.NewGuid().GetHashCode());
天空丶蒋 2016-05-12
  • 打赏
  • 举报
回复
随机数放在循环中是会有问题的。
範先森 2016-05-12
  • 打赏
  • 举报
回复
Random rnd = new Random(DateTime.Now.MilliSecond);实例化的时候使用这种方法实例化试试
下雨天抽烟 2016-05-12
  • 打赏
  • 举报
回复
for循环里面 的 random会取到一样的数,这个情况很常见。最笨也是最简单的处理方法就是在random取到的随机数后面+循环参数i。但这个东西只能保证你取到不同的数,但实际没啥用意义,就是一个随机数+ i
正怒月神 版主 2016-05-12
  • 打赏
  • 举报
回复
因为随机数和系统时间有关。 把随机数的Random r = new Random拿到 循环外
Rajesh_James 2016-05-12
  • 打赏
  • 举报
回复
或者你直接这样:

col = cs.randomcolor();
Thread.Sleep(50);
color = color + "颜色" + i + "为:" + col;
baidu_14897433 2016-05-11
  • 打赏
  • 举报
回复
伪随机呗 你断点了,所以相隔了一段时间了,然后随机数不一样了,所以颜色不一样了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧