Rumah  >  Artikel  >  pembangunan bahagian belakang  >  三个数的和在一个范围里,求3个数

三个数的和在一个范围里,求3个数

WBOY
WBOYasal
2016-06-13 12:18:001092semak imbas

3个数的和在一个范围里,求3个数
这3个数的取值范围是1-6,必定是整数

第一种情况,3个数的和取值范围4-10,随机产生这3个数(分3个数可以全部重复和不可以全部重复两种情况)

第二种情况,3个数的和取值范围11-17,随机产生这3个数(分3个数可以全部重复和不可以全部重复两种情况)


 举例说明:
 如果允许全部重复,那么如果3个数的和是15,那么3个数可能是5,5,5,而如果不允许全部重复,
3个数只可能是4,5,6或,6,6,3或3,6,6之类的组合

 求一个函数,

//根据给出的和,和是否允许3个数完全相同3个数的数组,
//要求必须能否返回所有可能的组合,比如6,6,3和3,6,6都必须有可能返回。
//程序只要求随机返回所有可能性组合之一即可。
function get3nums($第几种情况,$是否允许全部重复)
//比如list($rand1,$rand2,$rand3) = get3nums(2,false);//第二种情况,且3个数字不允许全部相同
//得到$rand1=6,$rand2=6,$rand3=3

 function get3nums($qingkuang,$ifxiangtong){

 }

------解决思路----------------------
    /**
 * @$start  范围下限
 * @$end    范围上限
 * @$repeat 允许重复,默认不允许
 **/ 
function get3nums($start, $end, $repeat=false) {
  if(!$repeat){
      $n =rand($start, $end); //取得指定范围中的一个数
      for($i=1;$i          for($j=1;$j              $k=$n-$i-$j;
              if($k0){
                  if(($i==$j and $j==$k)){
                      continue;
                  }
                  echo $i.'-'.$j.'-'.$k."
";
              }
          }
      }
  }else{
      $n =rand($start, $end);
      $avg=$n/3;
      if( $avg!=intval($avg)){
          echo "no value"."
";
      }else{
          echo $avg.'-'.$avg.'-'.$avg."
";
      }
  }
}
 
print_r(get3nums(4, 10));
echo '
';
print_r(get3nums(4, 10, 1));
echo '
';
print_r(get3nums(11, 17));
echo '
';
print_r(get3nums(11, 17, 1));
?>

------解决思路----------------------
再检查一下就是了

function get3nums($start, $end, $repeat=false) {<br />  do {<br />    do {<br />      $r = array();<br />      $n = rand($start, $end); //取得指定范围中的一个数<br />      $a = intval($n/3);<br />      $r[] = rand(1, min($a, 6));<br />      $r[] = rand(1, min($a, 6));<br />      $r[] = $n - array_sum($r);<br />    }while(max($r) > 6);<br />    if($repeat) break;<br />  }while(count(array_count_values($r)) == 1);<br />  return $r;<br />}<br />

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn