程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> php mysql 隨機生成-隨機生成的字符串為什麼重復率這麼高?求高手解惑

php mysql 隨機生成-隨機生成的字符串為什麼重復率這麼高?求高手解惑

編輯:編程綜合問答
隨機生成的字符串為什麼重復率這麼高?求高手解惑

使用循環向數據庫中插入數據:
createBigData.php
<?php
/*

  • 向數據庫中插入數據,數萬級別 / set_time_limit(0); require_once 'connDB.php'; $table = 'user'; //數據庫表 $conn = ConnDB::singleton(); //調用單例模式進行數據庫操作 //$conns = ConnDB::singleton(); //調用單例模式進行數據庫操作 addData($table, $conn); /
  • 批量向數據庫中插入數據 */ function addData($table, $conn) { for($i=1; $i<=100000; $i++){ $name = getName(); $sex = rand(0, 3); $age = rand(1, 120); $insert = "insert into ".$table." values( null, $i, '$name', '$sex', '$age')"; $conn->query($insert); //echo "
    insert:".$insert; }//end for() }//end func addData()

//隨機獲取姓名字符串
function getName() {
$name = '';
$singleWord = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$singleWords = 'abcdefghijklmnopqrstuvwxyz';
$length = strlen($singleWord);

for ($i = 0; $i < rand(3, $length); $i++) {
if ($i == 0) {
$name .= substr($singleWord, rand(1, $length)-1, 1);
}else {
$name .= substr($singleWords, rand(1, $length)-1, 1);
}//end if()
}//end for

return $name;
}//end func getName

?>
插入數據之後的查詢結果:
圖片說明

與第一條name重復的記錄:
圖片說明
本來要的十萬條數據都有了,但是通過查詢發現這樣一個規律:name字段每隔1760條記錄就會重復,而且不止name重復,sex、age也會一模一樣,不知道是怎麼回事,求各位大神解惑!

最佳回答:


隨機數的產生與以下三個方面有關:
(1) 隨機數算法,這個調用系統的隨機函數沒有辦法修改
(2) 隨機的種子 ,好像是有個 srand 的函數在 C 語言等環境下可用,但 php 偶沒有用過、不太清楚
(3) 隨機的范圍,可以考慮將隨機數的范圍設置的大一些,然後通過取模來限制在一定的范圍之內

後面兩項,都是需要程序代碼來處理,以增加隨機數的隨機性。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved