You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:12:36