C# yield return和Random一起用时,为什么会得到一个随时间变化的变量

新手上路,请多包涵

如图,编写了一个获取随机数的函数,为了省事使用了yield return

图片描述

测试调用:
图片描述

结果:
图片描述

如果把代码写成

tbData.Text = String.Join(",",data) + "\n\n" + String.Join(",",data);

得到的数据又是一样的,测了几下后猜测是与时间有关,因为随机数种子是根据时间变化的。
但为什么会出现这种情况?变量自动随时间变化??

阅读 1.8k
1 个回答

因为你用 DateTime.Now.Millisecond 做随机种子, 这个是毫秒级的, 如果两次调用在1毫秒一下, 你两次用的随机种子就是一样的,跑出的结果也一样, 如果两次调用超过1毫秒,则种子不同了, 随机序列也不同了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进