Php 不在数组中的随机数
我有一个数字数组,我需要生成一个随机数,然后检查该数字是否不在数组中,如果是,则生成另一个随机数,然后检查该数字是否在数组中 例如Php 不在数组中的随机数,php,Php,我有一个数字数组,我需要生成一个随机数,然后检查该数字是否不在数组中,如果是,则生成另一个随机数,然后检查该数字是否在数组中 例如 array = 1, 2, 4, 5, 7 rand(1, 7) = 3 or 6 如果rand1,7=1,2,4,5或7,它将再次运行,直到返回3或6 有人知道如何在php中实现这一点吗 您只需生成一个随机数并检查它是否已在数组中 $in = [1, 4, 7, 9]; do { $rand = rand($min, $max); } while(in_
array = 1, 2, 4, 5, 7
rand(1, 7) = 3 or 6
如果rand1,7=1,2,4,5或7,它将再次运行,直到返回3或6
有人知道如何在php中实现这一点吗 您只需生成一个随机数并检查它是否已在数组中
$in = [1, 4, 7, 9];
do {
$rand = rand($min, $max);
} while(in_array($rand, $in));
echo $rand, ' is random, but not in the input array';
上面的代码生成一个随机整数,该整数位于$min和$max中定义的边界内。如果该值已存在于数组中,则将获取一个新的随机值,并与输入数组进行比较
注意:虽然上面是最小的工作代码,但如果输入数组包含所有可能的值,则可能会创建一个无止境的循环。你没有在问题中说明这是否可能。如果可能的话,你需要解决这个问题。通过限制最大尝试次数或在之前验证输入数组并发出错误消息或增加rand的第二个参数
示例验证,仅建议用于较小的阵列:
$in = [1,2,3,4,5];
$min = 1;
$max = 5;
if(range($min, $max) === $in) {
echo 'No possible value in range';
exit;
}
// code from above
您可以简单地生成一个随机数并检查它是否已经在数组中
$in = [1, 4, 7, 9];
do {
$rand = rand($min, $max);
} while(in_array($rand, $in));
echo $rand, ' is random, but not in the input array';
上面的代码生成一个随机整数,该整数位于$min和$max中定义的边界内。如果该值已存在于数组中,则将获取一个新的随机值,并与输入数组进行比较
注意:虽然上面是最小的工作代码,但如果输入数组包含所有可能的值,则可能会创建一个无止境的循环。你没有在问题中说明这是否可能。如果可能的话,你需要解决这个问题。通过限制最大尝试次数或在之前验证输入数组并发出错误消息或增加rand的第二个参数
示例验证,仅建议用于较小的阵列:
$in = [1,2,3,4,5];
$min = 1;
$max = 5;
if(range($min, $max) === $in) {
echo 'No possible value in range';
exit;
}
// code from above
在这个示例中,我有$rand,故意有7个以上,只是为了确保代码运行良好,并打印匹配未找到
in_数组函数检查$rand的值是否存在于$numbers中(如果为真)。。如果未找到匹配项,则找到匹配项
希望这有帮助
在这个示例中,我有$rand,故意有7个以上,只是为了确保代码运行良好,并打印匹配未找到
in_数组函数检查$rand的值是否存在于$numbers中(如果为真)。。如果未找到匹配项,则找到匹配项
希望这有帮助。我想这个网站的许多用户都知道如何在phpHow的this中做到这一点?没有编写您想要的代码:1。生成一个随机数2。当数字存在于数组3中时。生成另一个随机数并返回到2。4.你有你的号码吗?我想这个网站的很多用户都知道如何在phpHow的this中做到这一点?没有编写您想要的代码:1。生成一个随机数2。当数字存在于数组3中时。生成另一个随机数并返回到2。4.你有你的号码这里唯一的建议是,有一个潜在的取决于输入的循环永远。我建议使用一个计数器进行迭代,如果该计数器的长度为输入数组的一半,则切换到只查找不在数组中的最小可用数或其他回退。感谢@ActionDan为此添加了一个节点,并在小数组中添加了一个小捕获。如果你有更好的建议,请随意改变它。@Rangad我一直担心这样一个循环可能会永远运行,或者至少运行得太久。在您的示例代码中,rand可能会一致地返回数字1、4、7和9—这不太可能,但可能。所以我有一个新的建议,先把所有的可能性都列出来,然后从中随机选择一个。那你就有把握了。我想这取决于应用程序是否值得这样做。这里唯一的建议是,根据输入,存在一个永久循环的可能性。我建议使用一个计数器进行迭代,如果该计数器的长度为输入数组的一半,则切换到只查找不在数组中的最小可用数或其他回退。感谢@ActionDan为此添加了一个节点,并在小数组中添加了一个小捕获。如果你有更好的建议,请随意改变它。@Rangad我一直担心这样一个循环可能会永远运行,或者至少运行得太久。在您的示例代码中,rand可能会一致地返回数字1、4、7和9—这不太可能,但可能。所以我有一个新的建议,先把所有的可能性都列出来,然后从中随机选择一个。那你就有把握了。我想这取决于应用程序是否值得这么做。欢迎使用StackOverflow-答案应提供一些背景参考和/或说明原因 事情如何运作。请在您的答案中提供更多信息。欢迎来到StackOverflow-答案应提供一些背景参考和/或关于为什么事情会发生以及如何发生的描述。请在回答时提供更多信息。