Hi,walkor,
遇到一个这样的怪问题,在Workerman-RPC中,我封装了一个这样一个获取随机数的静态方法 如下:
public static function getRandomNumber () {
$str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789';
return str_shuffle($str);
}
我只开一个进程时,每次请求后在业务中调用这个方法获取的随机值是不同的。但是当我开多个进程时,每次请求后在业务中调用这个的方法时获取到的随机值会出现重复情况。这是什么原因导致的呢?谢谢
所以叫“伪随机数”嘛,相同的种子,就会产生相同的序列。
谢谢你的回答,那什么开一个进程的时候随机数就不会重复呢?
在同一个进程中,随机数是不应该重复出现的(不容易重复出现)。
你原帖中说的“重复”,我以为是两个进程产生的随机数互相重复,如果是那样的话,只要在两个进程里分别用不同的 seed 做初始化,就能解决问题了。
但如果你说的是,开两个进程的时候,每个进程自己产生的随机数是重复的,那我就无法理解和解释了。