PHP多条件While循环问题:生成排除动态指定值的随机数
解决PHP生成排除指定值的随机数问题
我来帮你搞定这个问题!你的代码核心问题出在while循环的逻辑判断上,咱们拆解一下:
你的原循环条件用了&&(逻辑与):
while(($ll_50_rand_2 == $answer_ll) && ($ll_50_rand_2 == $ll_50_rand_1))
这个条件的意思是:只有当随机数同时等于X和Y的时候,才会重新生成随机数。但X和Y是两个不同的动态值(除非特殊情况),所以这个条件几乎永远不会触发,循环直接跳过,导致你初始赋值的$ll_50_rand_2 = $answer_ll直接被输出,自然会重复X或者Y。
修正后的代码
我们需要把逻辑判断改成||(逻辑或),意思是:只要随机数等于X或者等于Y,就重新生成,直到得到符合要求的数:
<?php $answer_ll = 1; // 页面加载时动态生成的值 $ll_50_rand_1 = 2; // 页面加载时动态生成的值 // 先初始化一个可能不符合要求的初始值 $ll_50_rand_2 = $answer_ll; // 只要随机数等于X 或者 等于Y,就重新生成 while($ll_50_rand_2 == $answer_ll || $ll_50_rand_2 == $ll_50_rand_1){ // 生成0到3之间的随机数 $ll_50_rand_2 = rand(0, 3); // 如果你用的是PHP 7.1+,推荐用更安全的random_int // $ll_50_rand_2 = random_int(0, 3); } echo $ll_50_rand_2; ?>
额外说明
- 如果你的PHP版本在7.1及以上,优先使用
random_int()替代rand(),它生成的是加密安全的随机数,比rand()更可靠。 - 即使X和Y是同一个值(极端情况),这个逻辑也能正常工作,因为只要随机数等于这个重复的值,就会重新生成。
内容的提问来源于stack exchange,提问作者Raja
相关产品推荐
相关产品推荐

