欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php rand 種子

趙鴻安1年前6瀏覽0評論

在PHP開發(fā)中,rand函數(shù)經(jīng)常用來生成隨機(jī)數(shù),但是rand生成的隨機(jī)數(shù)其實(shí)不是真正的隨機(jī)。那么如何解決這個(gè)問題呢?答案就是:使用rand的種子。PHP允許我們?yōu)閞and提供一個(gè)種子,這個(gè)種子類似于一個(gè)隨機(jī)數(shù)的“起始點(diǎn)”,通過為rand函數(shù)提供不同的種子,可以生成不同的隨機(jī)數(shù)。下面我們通過舉例來看一看種子的應(yīng)用:

srand(10);
echo rand();
//output: 292570609
srand(10);
echo rand();
//output: 292570609
srand(20);
echo rand();
//output: 980029256

從上面的代碼段可以看出,當(dāng)我們?yōu)閞and提供同一個(gè)種子時(shí),它生成的隨機(jī)數(shù)是相同的。當(dāng)我們?yōu)閞and提供不同的種子時(shí),它生成的隨機(jī)數(shù)也是不同的。請注意,如果不提供種子,PHP會默認(rèn)使用當(dāng)前時(shí)間做為種子,這意味著如果在同一秒鐘內(nèi)連續(xù)調(diào)用rand函數(shù),我們很有可能會獲得相同的隨機(jī)數(shù)。

另外,還有一點(diǎn)需要注意:如果你在一個(gè)循環(huán)中使用rand函數(shù),那么你應(yīng)該在循環(huán)外部設(shè)置一次種子,而不是在循環(huán)內(nèi)部設(shè)置種子。這是因?yàn)槿绻阍谘h(huán)內(nèi)部設(shè)置種子,那么每次循環(huán)都會重新設(shè)置種子,導(dǎo)致rand生成的隨機(jī)數(shù)不再是真正的隨機(jī)。

srand(10);
for($i=0; $i<5; $i++){
echo rand() . "<br>";
}
//output: 292570609 24498029 703129208 812037097 2075410519
srand(10);
for($i=0; $i<5; $i++){
echo rand() . "<br>";
}
//output: 292570609 24498029 703129208 812037097 2075410519
for($i=0; $i<5; $i++){
srand($i);
echo rand() . "<br>";
}
//output: 1471062014 320746533 1268407473 378206541 928570577

從上面的代碼段可以看出,如果我們在循環(huán)內(nèi)部設(shè)置種子,那么每次循環(huán)都會重新設(shè)置種子,導(dǎo)致rand生成的隨機(jī)數(shù)變得有規(guī)律了。如果我們在循環(huán)外部設(shè)置種子,那么每次循環(huán)都會使用同一個(gè)種子,rand生成的隨機(jī)數(shù)就是真正的隨機(jī)。

綜上所述,種子在rand函數(shù)中的使用非常重要,如果你需要生成真正的隨機(jī)數(shù),請務(wù)必為rand提供一個(gè)不同的種子。