鍍金池/ 問(wèn)答/C#/ C# yield return和Random一起用時(shí),為什么會(huì)得到一個(gè)隨時(shí)間變化

C# yield return和Random一起用時(shí),為什么會(huì)得到一個(gè)隨時(shí)間變化的變量

如圖,編寫了一個(gè)獲取隨機(jī)數(shù)的函數(shù),為了省事使用了yield return

圖片描述

測(cè)試調(diào)用:
圖片描述

結(jié)果:
圖片描述

如果把代碼寫成

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

得到的數(shù)據(jù)又是一樣的,測(cè)了幾下后猜測(cè)是與時(shí)間有關(guān),因?yàn)殡S機(jī)數(shù)種子是根據(jù)時(shí)間變化的。
但為什么會(huì)出現(xiàn)這種情況?變量自動(dòng)隨時(shí)間變化??

回答
編輯回答
巫婆

因?yàn)槟阌?DateTime.Now.Millisecond 做隨機(jī)種子, 這個(gè)是毫秒級(jí)的, 如果兩次調(diào)用在1毫秒一下, 你兩次用的隨機(jī)種子就是一樣的,跑出的結(jié)果也一樣, 如果兩次調(diào)用超過(guò)1毫秒,則種子不同了, 隨機(jī)序列也不同了。

2018年4月15日 14:23