我想用rand()创建一个随机数,其中数字!= to(例如516)
例如,如果我有号码" 5"在数据库中,我想插入一个随机数!= 5.答案 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并编写一个生成新标识符的循环并尝试插入它;当插入没有引起约束错误时它结束;从正确的角度来看,你更有可能被陨石击中,而不是达到重复值。