使用循环向数据库中插入数据:
createBigData.php
<?php
/*
//随机获取姓名字符串
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) 随机的范围,可以考虑将随机数的范围设置的大一些,然后通过取模来限制在一定的范围之内
后面两项,都是需要程序代码来处理,以增加随机数的随机性。
http://php.net/manual/en/function.srand.php
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
在你每次调用rand以前都加上
srand(make_seed());
你用的随机数生成方法是用的时间种子的方法,因为程序跑很快,可以看成是同一时间完成的,因为随机数是根据当前时间来得到的,所以重复率会很高
你可以这样,用某次产生的随机数作为种子产生下次的随机数。