rand()number其中!=具体数字

时间:2015-04-17 02:35:30

标签: php mysql

我想用rand()创建一个随机数,其中数字!= to(例如516)

例如,如果我有号码" 5"在数据库中,我想插入一个随机数!= 5.

4 个答案:

答案 0 :(得分:2)

一种解决方案......

$disallow = 5;
$random_value = $disallow;
while($random_value == $disallow) {
    $random_value = rand();
} 
echo $random_value;

关于rand的文档,http://php.net/manual/en/function.rand.php

答案 1 :(得分:1)

使用数组和rand:

$ran_begin = array(1,2,3,4,6,7,8,9);//not contain 5 and 0
$ran = array(0,1,2,3,4,5,6,7,8,9);

$random_value = '';
$k = array_rand($ran_begin);
$v = $array[$k];
$random_value = $random_value.$v;

$k = array_rand($ran);
$v = $array[$k];
$random_value = $random_value.$v;


$k = array_rand($ran);
$v = $array[$k];
$random_value = $random_value.$v;

..............................

答案 2 :(得分:1)

这个将排除数组中给出的所有值。

$excluded_nums = array( .... );
$val = null;
do {
  $val = rand();
} while (in_array($val, $excluded_nums));

但您可能有兴趣探索另一种方法,也许是openssl_random_pseudo_bytes

答案 3 :(得分:1)

  

我正在创建一个基于cookie的安全登录系统,因此这个数字必须是不可预测的。

建议不要生成数字,而是生成不透明的标识符,例如UUID v4,这意味着不可预测(如果使用了合适的熵源);示例标识符:

de305d54-75b4-431b-adb2-eb6b9e546014

我已经在earlier answer中创建了一个生成此标识符的函数。

  

我在数据库中有一个数字列表,我想为所有数字生成一个数字!=

我建议的方法是在标识符上添加UNIQUE constraint并编写一个生成新标识符的循环并尝试插入它;当插入没有引起约束错误时它结束;从正确的角度来看,你更有可能被陨石击中,而不是达到重复值。