本文目錄一覽:
- 1、php.一定時間內隨機數不變。要怎麼做。
- 2、php生成隨機數字,範圍1-100,每次生成一個數字,可以重複
- 3、php隨機數方法,html的腳本調用,每次結果都一樣為什麼
- 4、在PHP安全隨機數生成問題,怎麼解決
- 5、php 如何實現,從數組中隨機取出數據,還要保證下次不會再取到
- 6、php隨機數的問題
php.一定時間內隨機數不變。要怎麼做。
這種情況,最簡單的辦法, 就是將隨機數存到資料庫中, 判斷此數據存放是資料庫時間, 如果超過48小時, 則重新生成一次, 再存入資料庫, 否則的話, 就直接取資料庫值。
php生成隨機數字,範圍1-100,每次生成一個數字,可以重複
echo mt_rand(1,100);
請使用rand函數
int rand ( int $min , int $max )
使用循環生成,假如想生成512個數字,就可以像這樣:
$num = 1;//初始化一個變數為1
for($i = 1; $i = 512; $i++)//這個是看你要生成多少個數字,然後循環生成
{
if($num = 100)
$num = 1;//若變數的數字大於一百,則返回變成1
echo $num.”/br”;//輸出變數數字,即生成的數字,後面的/br是換行
$num++;//然後將變數加1,即在前面生成的數字基礎上加一
}
擴展資料:
密碼學安全偽隨機性。其定義為,給定隨機樣本的一部分和隨機演算法,不能有效的演算出隨機樣本的剩餘部分。
真隨機性。其定義為隨機樣本不可重現。實際上只要給定邊界條件,真隨機數並不存在,可是如果產生一個真隨機數樣本的邊界條件十分複雜且難以捕捉(比如計算機當地的本底輻射波動值),可以認為用這個方法演算出來了真隨機數。
參考資料來源:百度百科-隨機數
php隨機數方法,html的腳本調用,每次結果都一樣為什麼
……………………
這個
我怎麼說
你訪問一次url,伺服器才會把php腳本解析一次。你寫了的這些方法,在客戶端的瀏覽器上已經沒有了,只有alert(1), 所以你每次點button都一樣。在客戶端生成隨機數,請用javascript。
script type=”text/javascript”
function test(){
var r = Math.rand();
alert(r)
}
/script
在PHP安全隨機數生成問題,怎麼解決
0x00 rand()函數
rand()的隨機數默認最大32767,可以用於爆破這裡不再舉例。
0x01 mt_rand()和mt_srand()函數
mt_srand()函數用於播種,PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函數給隨機數發生器播種,當PHP版本到了5.2.1後,通過修改演算法修補了奇數和偶數的播種相等的問題,這樣也導致了php5.2.0前後導致同一個播種後的mt_rand()的值不一樣
5.2.6php4.2.0默認播種的演算法也不是很強悍,當目標5.20時候,我們exp運行的環境也要是5.20的版本,mt_rand處理的數據都是不安全的。在web應用里很多都使用mt_rand來處理隨機的session,比如密碼找回功能等等。
如果你知道一個mt_rand()的值就可以,就可以推斷出mt_srand()的種子值,從而推斷出下一個mt_rand()值。
root@kali:~# php5 -r 『mt_srand(123123123); echo mt_rand(),」\n」; echo mt_rand(),」\n」;』
519979806
1474031914
root@kali:~/php_mt_seed-3.2# ./php_mt_seed 519979806
Found 0, trying 100663296 – 134217727, speed 34831590 seeds per second
seed = 123123123
Found 1, trying 1509949440 – 1543503871, speed 34497359 seeds per second
seed = 1525862101
Found 2, trying 3992977408 – 4026531839, speed 34601190 seeds per second
seed = 3994356879
Found 3, trying 4261412864 – 4294967295, speed 34578163 seeds per second
Found 3
可見程序給出了三個種子,逐個測試即可:
root@kali:~# php5 -r 『mt_srand(1525862101); echo mt_rand(),」\n」; echo mt_rand(),」\n」;』
519979806
14803299
root@kali:~# php5 -r 『mt_srand(3994356879); echo mt_rand(),」\n」; echo mt_rand(),」\n」;』
519979806
978260809
123123123為真正的種子,這樣就可以輕鬆拿到真正的種子,下一個要產生的隨機數也就知道了
php 如何實現,從數組中隨機取出數據,還要保證下次不會再取到
每次隨機取出一個數之後,應該刪除這個數,才可以保證下次不取到它。例如你的100個數,第一次隨機取一個,然後刪除它,下次再剩餘的99裡面隨機取一個,這樣就不會重複了。
寫代碼沒難度了吧,你寫寫看,如果希望我繼續回答,建議你粘貼一下你寫的內容,不完整或者錯誤沒關係,至少你去思考了的,而且我看了代碼知道你錯在哪裡,才可以針對性的講解。
沒空等你寫代碼了,我把我的貼出來,今天晚上要熬夜加班,沒空回來看帖子了,不好意思,希望你認真學習。
?php
$arr=array();
for ($i=1;$i=100;$i++) array_push($arr,$i);
print_r($arr);
for ($i=1;$i=100;$i++){
$n=rand(0,count($arr)-1);//產生隨機數,最小值是0,最大值是數組剩餘元素可數-1
echo $arr[$n],” “;//顯示取的隨機數
array_slice($arr,$n,1);//刪除剛才取到的數
}
?
php隨機數的問題
呵呵,我給你找出錯來了
$_0=”img src=\”_0.gif\””;
$_0=”img src=\”_1.gif\””;
$_2=”img src=\”_2.gif\””;
看到了嗎!!讓我找了好半天!!把第二個0改成1就好了。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/194284.html