在php中获取随机值,其中必须有一个确切的数量

时间:2016-10-17 13:49:05

标签: php

我有一个问题,我需要在PHP中的随机值。我完成了所有工作。但是当我需要时,比方说,10个随机值,我需要其中8个至少是某个整数。我怎样才能做到这一点? 亲切的问候, 利昂

<?php
$vertices = $_POST["vertices"];
echo "Vertices: $vertices <br>";
$edges = $_POST["edges"];
echo "Edges: $edges <br>";
$length = $_POST["length"];
echo "Length: $length <br><br>";

$temp1 = $edges;

for($x = 0; $x < $vertices; $x++){
for($i = 0; $i < $x; $i++){
    echo "_   ";
}
for($y = $x; $y < $vertices; $y++){

    $value = rand(0,1);
    if($x == $y){ 
        echo "0   ";
    } else {
        if($value == 1 && $temp1 > 0){
            echo "1   ";
            $temp1--;
        } else {
            echo "0   ";
        }
    }
}
echo "<br>";
}
?>  
<html>
</font>
</html>

这将输出如下内容:

Vertices: 5 
Edges: 8 
Length: 4 

0 0 1 0 1 
_ 0 0 1 0 
_ _ 0 1 0 
_ _ _ 0 1 
_ _ _ _ 0 

但是,我需要在矩阵的上半部分恰好有8个1。我不知道如何实现它,因为现在它将在8下做一个随机数。

1 个答案:

答案 0 :(得分:0)

我会采取另一种方法:

  • 您需要填写$vertices * ($vertices - 1) / 2个职位(10)。
  • 应该$edges1次,其余0次(8和2次)。
  • 您可以使用8 1和2 0来填充数组。
  • 随机播放阵列。
  • 遍历矩阵并为每个需要填充的位置弹出数组元素。