如何确保随机数不会重复?

时间:2014-01-13 15:07:51

标签: php random

我尝试使用rand()将其作为数据库中的唯一ID。但是如何确保这个随机数不会重复?

<?php

$num = '';
for ($i = 0; $i < 9; $i++)
   $num .= mt_rand(0, 9);
echo '<input name="counter" value="'.$num.'">';
?>

2 个答案:

答案 0 :(得分:-1)

如果您想在数据库表中插入唯一值(这是我理解您的方式),最好在数据库中创建唯一索引(这可确保下表中的表中没有重复的条目。 php的情况,检查数组中是否已存在重复值。

<?php
  $unique = array();

  while( count($unique) < 9)
  {
    $num = mt_rand(0, 9);

    if( isset($unique[$num]) == false )
       $unique[$num] = true;
  }

  print_r($unique); 
?>

答案 1 :(得分:-2)

如果你这样做会更好。

首先使用range()

获取所需的范围

然后你shuffle数组,这样你就可以按随机顺序得到它。

现在,如果您只想要5,则可以使用array_slice

$range = range(1, 20);
shuffle($range);
$random = array_slice($range, 0, 5);

print_r($random);

工作示例:example