Hi,walkor,
遇到一個(gè)這樣的怪問(wèn)題,在Workerman-RPC中,我封裝了一個(gè)這樣一個(gè)獲取隨機(jī)數(shù)的靜態(tài)方法 如下:
public static function getRandomNumber () {
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789';
return str_shuffle($str);
}
我只開一個(gè)進(jìn)程時(shí),每次請(qǐng)求后在業(yè)務(wù)中調(diào)用這個(gè)方法獲取的隨機(jī)值是不同的。但是當(dāng)我開多個(gè)進(jìn)程時(shí),每次請(qǐng)求后在業(yè)務(wù)中調(diào)用這個(gè)的方法時(shí)獲取到的隨機(jī)值會(huì)出現(xiàn)重復(fù)情況。這是什么原因?qū)е碌哪??謝謝
所以叫“偽隨機(jī)數(shù)”嘛,相同的種子,就會(huì)產(chǎn)生相同的序列。
在同一個(gè)進(jìn)程中,隨機(jī)數(shù)是不應(yīng)該重復(fù)出現(xiàn)的(不容易重復(fù)出現(xiàn))。
你原帖中說(shuō)的“重復(fù)”,我以為是兩個(gè)進(jìn)程產(chǎn)生的隨機(jī)數(shù)互相重復(fù),如果是那樣的話,只要在兩個(gè)進(jìn)程里分別用不同的 seed 做初始化,就能解決問(wèn)題了。
但如果你說(shuō)的是,開兩個(gè)進(jìn)程的時(shí)候,每個(gè)進(jìn)程自己產(chǎn)生的隨機(jī)數(shù)是重復(fù)的,那我就無(wú)法理解和解釋了。