我做了一些研究,但没有为我的问题找到任何解决方案。
我要存档的内容:
从0($min
)和1($max
)中生成一个随机数,但随机数中的固定数量($many
)为1。随机数的长度应为6,就像我的while循环(while($xLoop <= 6)
)。
这是我目前的代码:
$min = 0;
$max = 1;
$many = 3;
$xLoop = 1;
while($xLoop <= 6) {
$nRand = mt_rand($min,$max);
if($nRand == 1){ //if random number comes out number 1
$many--; // Prevent number 1 more then $many...
//Do something...
}else{ //if random number comes out not number 1
//Do something and still looping until get 6 times
}
echo $nRand.' - '.$many.'</br>'; //For debugin... i want to see how many number 1 comes out.
$xLoop++;
}
它会循环6次,所以我们有一个长度为6的随机数,但是我希望在我的随机数中有一个固定的1,即$many
(这里是3)。剩下的就是0,直到我们达到6的长度。
如何修复此代码?或者有更简单的方法吗?
答案 0 :(得分:2)
这应该适合你:
无需循环。首先用1 $many
次填充一个数组。然后array_merge()
数组中包含0&#39; s,直到$length
元素为止。
<?php
$min = 0;
$max = 1;
$many = 3;
$length = 6;
$arr = array_fill(0, $many, $min);
$arr = array_merge($arr, array_fill($many, $length-$many, $max));
shuffle($arr);
echo implode("", $arr);
?>
可能的输出:
011010