【发布时间】:2016-07-22 07:00:51
【问题描述】:
如何生成以下随机数组:
array(1, 0 , 0, 1, 1, 1, 1, 0, 1, 0, 0)
与length = n?
当然,for 解决方案始终存在。但是有没有任何单行简单的解决方案,比如array_fill和mt_rand(0, 1)的任意组合?
【问题讨论】:
如何生成以下随机数组:
array(1, 0 , 0, 1, 1, 1, 1, 0, 1, 0, 0)
与length = n?
当然,for 解决方案始终存在。但是有没有任何单行简单的解决方案,比如array_fill和mt_rand(0, 1)的任意组合?
【问题讨论】:
在 mt_rand 中使用范围
$random_bit_stream = array_map(function() {
return mt_rand(0,1);
}, range(1,6));
or
$random_bit_stream = array_map(function() {
return rand(0,1);
}, range(1,6));
print_r($random_bit_stream);
输出:
Array ( [0] => 0 [1] => 1 [2] => 1 [3] => 1 [4] => 0 [5] => 0 )
【讨论】:
试试这个,
function randome_array($n)
{
$array=array();
$x = 1;
while($x <= $n) {
$temp = mt_rand(0,1);
array_push($array,$temp);
$x++;
}
return $array;
}
print_r(randome_array(5));
希望对你有所帮助。
【讨论】:
嗯,正如你提到的,你可以单行 for 解决方案。
for ($i = 0; $i < count($arr); $i++) $arr[$i] = rand(0, 1);
除此之外,既然你提到了array_fill,你也可以简单地将它与随机函数一起使用
$arr = array_fill (0, count($arr), rand(0, 1));
【讨论】:
array_fill (0, count($arr), rand(0, 1)); 只会使第一个值随机,而不是在所有值中重复它。
【讨论】:
range 获得结果?请解释。谢谢
range 是如何用于生成比特流的?