我有一组来自html表单的数字,例如:123456
我想输出x个独特的随机数,例如:143256
312456
453216
等
我搜索过并搜索过,无法找到如何做到这一点。
我正在使用此代码来重新排列原始数字,但不了解如何创建循环以输出x行数。
$numbers = array("$n1","$n2","$n3","$n4","$n5","$n6");
shuffle($numbers);
foreach ($numbers as $v) {
echo = "$v ";
}
有人可以给我一个提示并指出我正确的方向 非常感谢您的帮助。
答案 0 :(得分:0)
为了在PHP中生成随机数,您可以使用名为'mt_rand()'
的函数此功能将返回最小和最大范围之间的数字。
为了获得一个随机大小的随机数列表,你可以简单地...
// Random numbers array
$randomNumbers = array();
// Create a random sized array between 1 and 30 values in length.
for($x = 0; $x < mt_rand(1,30); $x++) {
// Generate a random number and push it onto the array.
$randomNumbers[] = mt_rand(0, 99999);
}
// display the generated numbers
print_r($randomNumbers);
die();
为了使数字列表唯一,您可以在生成数字时执行检查以查看它是否在数字列表中。您可以使用in_array()
执行此操作我不确定这是否能回答你的问题,希望能解决。
答案 1 :(得分:0)
使用for loop
<?php
$numbers=array("$n1","$n2","$n3","$n4","$n5","$n6");
$howManyRandomNumbers = 10; // This is how many you want.
for ($i = 1; $i <= $howManyRandomNumbers; $i++) {
shuffle($numbers);
foreach($numbers as $v) {
echo "$v ";
}
}
?>
请注意,这不会产生任意数字,只会是随机数字。
答案 2 :(得分:0)
$n1 = rand(100000,999999);
$n2 = rand(100000,999999);
$n3 = rand(100000,999999);
$n4 = rand(100000,999999);
$n5 = rand(100000,999999);
$n6 = rand(100000,999999);
$numbers = array($n1,$n2,$n3,$n4,$n5,$n6);
function code ($numbers)
{
$code = "";
foreach($numbers as $n)
{
$n .= ""; // turn $n into a string
$code .= $n[rand(0,strlen($n)-1)];
}
return $code;
}
echo "numbers:\n";
foreach($numbers as $n) echo "$n\n";
echo "\ncodes:\n";
for ($i = 0 ; $i != 10 ; $i++) echo code ($numbers)."\n";
答案 3 :(得分:0)
我的猜测是你想要这个?
<?php
$numbers=array($n1,$n2,$n3,$n4,$n5,$n6");
for($i=0;$i<=10;$i++) {
shuffle($numbers);
foreach($numbers as $v) {
echo $v;
}
echo "<br />\r\n";
}
?>
答案 4 :(得分:0)
尝试
$numbers = array($n1,$n2,$n3,$n4,$n5,$n6);
shuffle($numbers);
foreach(array_slice(array_unique($numbers), $start,$limit) as $v)
echo $v." ";
你有n1到n24的复选框,带有唯一值,所以说你想要“独特的随机数”让人感到困惑。
现在我建议你改变你的
<input name="n..." value="$value">
到<input name="n[]" value="$value">
然后把它放在你的php
if($_SERVER['REQUEST_METHOD'] == 'POST'){ $limit2 = $_POST["limit2"]; $limit = $_POST['limit']; /* * Since you have input fields of n1 to n24 i put them in an array */ $n = array(); if(isset($_POST['n'])){ foreach($_POST['n'] as $key=>$value) $n[$key] = $value; shuffle($n); } /* * All your checkbox values are unique so i don't get what you mean by "unique values" */ for($x = 0, $y = count($n) - 1; $x = 0; $x++,$y--) { $v = preg_replace(array('/\s{2,}/', '/[\t\n]/'), ' ', $n[$x]); echo $v ."
\r\n"; } }
希望这有帮助
答案 5 :(得分:0)
答案 6 :(得分:0)
WOW感谢投入的人们!
使用提供的答案,我的代码几乎完全符合我的要求:)
<?php
$numbers = array(
"$n1",
"$n2",
"$n3",
"$n4",
"$n5"
);
for ($i = 0; $i <= $limit; $i++) {
shuffle($numbers);
foreach (array_slice(array_unique($numbers), 0, $limit2) as $v) {
echo $v;
}
echo "<br />\r\n";
}
?>
此致