PHP生成两个随机数而不重复以前的数字

时间:2013-07-30 16:49:00

标签: php random repeat

我有以下代码应该生成两个随机数,如果之前已生成它们,则不要重复它们。 $ ticket_number1和$ ticket_number2分别保存到'ticket1'和'ticket2'字段中的数据库表'tickets'。 虽然有些问题,我测试了脚本,生成的数字在1到6之间,我有一个结果,其中$ ticket_number1和$ ticket_number2都是相同的数字(在这种情况下为4),这不应该发生。之后我再次测试了,我得到了两个不同的数字(1和4),但之前已经发出过,所以他们不应该再次出现。 这意味着整个脚本除了生成随机数之外没有做任何事情。 我已被告知mysql_已被弃用,但这不是脚本不起作用的原因,对吧? 关于如何正常工作的任何想法? 感谢您的帮助。

function getTicket(){
    $count=1;
    while($count){
        $ticket_number = mt_rand(01990, 32000);
        $query = "SELECT ticket1 FROM `tickets`
        WHERE `ticket1` == '$ticket_number' or `ticket2` == '$ticket_number'";
        $count = mysql_num_rows(mysql_query($query));
    }
    return $ticket_number;
}



$ticket_number1 = getTicket();
$ticket_number2 = getTicket();

1 个答案:

答案 0 :(得分:0)

我只是在黑暗中拍摄,但如果数字在同一个电话中,即$ ticket_number1和$ ticket_number2在对页面的一次调用中是相同的,你可以通过告诉函数拒绝已经选择的数字来解决这个问题。

function getTicket($exclude=-1){
  $count=1;
  while($count){
    $ticket_number = mt_rand(01990, 32000);
    $query = "SELECT ticket1 FROM `tickets`
    WHERE `ticket1` == '$ticket_number' or `ticket2` == '$ticket_number'";
    $count = mysql_num_rows(mysql_query($query));
    if(!$count)
       $count=$ticket_number==$exclude;

  }
  return $ticket_number;
}

$ticket_number1 = getTicket();
$ticket_number2 = getTicket($ticket_number1);