如何让这个随机字符串生成器创建随机字符串。总是得到重复。数组通常由0 - 10个元素组成,但在重复时仍然得到相同数量的床和浴室,我知道统计上它是混乱的。
如何消除重复?
for ($i = 0; $i <= 1000000; $i++) {
srand($i);
$price = rand(20000, 1000000);
$bed = rand(0, 20);
$bath = rand(0, 7);
$addressnum = rand(100, 10000);
$address = (int) preg_replace('/'D/', '', $addressnum) . " lol st";
$province = $f_contents[rand(0, count($f_contents) - 1)];
$postedby = 3;
$description = $de_contents[rand(0,count($de_contents) - 1)];
$status = "Unsold";
$type = $status_a[array_rand($status_a)];
$category = $category_type[array_rand($category_type)];
$size = rand(100,100000);
$builtin = rand(1850, 2013);
$queryString = "INSERT INTO listings
(PRICE, ADDRESS, PROVINCE, DESCRIPTION, STATUS, TYPE, CATEGORY, SIZE, BUILTIN, BED, BATH, POSTED_BY) VALUES
($price, '$address', '$province', '$description', '$status', '$type', '$category', $size, $builtin, $bed, $bath, $postedby)";
echo $queryString . "<br>";
$query = $db -> query($queryString);
}
停止使用rand()。使用mt_rand()应该可以解决这个问题。
我在rand()和重复值中遇到过几次问题。我必须承认,在这些情况下,我从来没有真正花时间检查为什么rand()看起来如此不稳定。
将srand()
移出循环。在您的程序中,srand()
应该被调用一次,并且只能调用一次。此后,rand()
将产生随机结果。如果你反复调用srand()
,你得到的根本不是随机数,你得到的是你调用它的种子的哈希值。
当然,切换到mt_rand()
会给你更高质量的随机数,但这不是你的代码的问题。