如何在PHP中生成*&的随机模式
您好,我正在制作一个程序,让我帮助生成一个具有指定限制的随机字符串和*的随机字符串,但是*的组合不应该重复 例:如果输入3,则O/p应为如何在PHP中生成*&的随机模式,php,logic,Php,Logic,您好,我正在制作一个程序,让我帮助生成一个具有指定限制的随机字符串和*的随机字符串,但是*的组合不应该重复 例:如果输入3,则O/p应为 #** **# **# 它应该生成一个长度为3到3行的随机字符串,具有不同的模式,并且模式不应该重复。我正在使用下面的代码,但无法实现它 $n = 3; for($i = 0; $i < n; $i++) { for($j=0;$j<=$n;j++) { echo "*#"; }
#**
**#
**#
它应该生成一个长度为3到3行的随机字符串,具有不同的模式,并且模式不应该重复。我正在使用下面的代码,但无法实现它
$n = 3;
for($i = 0; $i < n; $i++)
{
for($j=0;$j<=$n;j++)
{
echo "*#";
}
echo "<br />";
}
但是我无法生成输出,我的逻辑哪里出故障了?如果要确保同一模式不会出现多次,则必须保留生成字符串的记录。最基本的形式可能是这样的:
public function generate() {
$amount = 3; // The amount of strings you want.
$generated_strings = []; // Keep a record of the generated strings.
do {
$random = $this->generateRandomString(); // Generate a random string
if(!in_array($random, $generated_strings)) { // Keep the record if its not already present.
$generated_strings[] = $random;
}
} while(sizeof($generated_strings) !== $amount); // Repeat this process until you have three strings.
print_r($generated_strings);
}
public function generateRandomString($length = 3) {
$characters = '*&#';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
return $randomString;
}
您可以使用while循环和独特的数组来实现这一点。 我首先有一个可能包含字符的数组。 然后我循环,直到结果数组达到所需长度。 我使用array unique删除循环中的任何重复项。 我使用rand0,2从可能的字符数组中选择一个随机字符
$arr = ["*", "&", "#"];
$res = array();
$n =7;
While(count($res) != $n){
$temp="";
For($i=0;$i<$n;$i++){
$temp .= $arr[Rand(0,count($arr)-1)];
}
$res[] = $temp;
$res = array_unique($res);
}
Var_dump($res);
更新了OP未明确指定的超出范围的详细信息。不一定是最优化的算法,但它应该可以工作 我使用的是一个字符串生成器,有点随机,它结合了您提供的字符。第二部分是用生成的尚未出现的字符串填充输出数组
<?php
function randomize($n) {
$s = '';
for ($i = 0; $i < $n; $i++) {
$s. = (rand(0, 10) < 5 ? '*' : '#');
}
return $s;
}
$n = 3;
$output = array();
for ($i = 0; $i < $n; $i++) {
$tmp = randomize($n);
while (in_array($tmp, $output)) {
$tmp = randomize($n);
}
$output[] = $tmp;
}
print_r($output);
你在每次迭代中都重复同样的内容我已经按照我的逻辑更新了代码,但它仍然不起作用。你的问题写得不清楚。您说行应该是唯一的,但您希望******。请更新您的问题,以便将来的读者不会感到困惑。您的代码不会运行。A$不见了,第4行的点是misplaced@mickmackusa代码是不言自明的,但我将尝试添加一个对正在发生的事情的描述:工作完全符合我的要求,但它背后的逻辑是什么?我在//behing the line中添加了一些解释。是否有一个特定的部分你不能遵循?嗯,是的,我得到了代码解释,我在哪里可以找到一些更具挑战性的代码,像这样,以保持我的逻辑刷?嗯,只要尝试谷歌搜索练习/在线课程/书籍/等。如果我输入7,那么行应该是7,生成的字符串的长度应该是7你没有说过。在你的问题中,没有一处提到字符串的长度。你的问题说它应该生成一个长度为3的随机字符串,而不是它依赖于$n值@Akshay请重新阅读问题3是一个变量,请删除我提到的否决票clearly@Akshay你现在可以取消你的否决票了,我已经更新了代码,也删除了你对这个问题的否决票,并删除了这个评论