即使在改变种子之后,随机重复类似的字符串

时间:2013-06-14 09:23:55

标签: php random

如何让这个随机字符串生成器创建随机字符串。我一直在重复。阵列通常包含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);
    }

2 个答案:

答案 0 :(得分:0)

停止使用rand()。使用mt_rand()代替应该解决这个问题。

我使用rand()和重复值多次遇到问题。我不得不承认,在那些情况下,我从来没有真正花时间去检查为什么rand()看起来如此不稳定。

答案 1 :(得分:0)

srand()置于循环之外。 srand()应该在你的程序中被称为ONCE,并且只能被调用一次。此后,rand()将产生随机结果。如果你反复拨打srand(),你根本就不会得到随机数,你得到的是你所称的种子的哈希值。

当然,切换到mt_rand()会为您提供更高质量的随机数,但这不是您的代码的问题。