问题描述
我碰到一个情况:有一个不带参数方法,此方法目的是输出一串随机数。正常情况下每次的输出不一样,但把此方法放在一个循环中奇怪出现了,它竟然输出一样的东西.所以我猜测C#可能是编译时自动优化了.我又隐隐的记得有一个Attribute放在方法上编译器就不会随便优化神们,你们还记得起不?
解决方案
解决方案二:
你还是先从你方法的逻辑入手吧,先确认你的逻辑没问题再去研究编译器优化出问题的可能性吧
解决方案三:
newRandom要放循环外面
解决方案四:
因为所谓的“随机数”是与时间有关的,循环时速度太快了,时间值一样,自然就产生一样的数了。这和编译器的优化没有关系。
解决方案五:
楼上正解~~~
解决方案六:
这和优化没有半毛钱的关系遇到问题先找自己原因
解决方案七:
newRandom()要放在循环里面也不是不可以,其实如果多次随机之间没有时间间隔的话,放在哪里都是一样,因为默认使用了时间种子,你可以每次使用一个不一样的数作为种子来初始化Random,比如每次i++,然后newRandom(i)。你了解了“随机并不是真的随机”后,这个问题就很简单了。
时间: 2024-09-09 01:45:55