1到288个 随机取30%的数字$sum=288;
.....
echo $a;//1,2,3,4,5,7,8,9,14,25  # 随机取30%的数字

解决方案 »

  1.   

    我写的不好,希望有大神来指导一下$sum = 288;
    $arr = array();
    for ($i=288; $i >=1; $i--) { 
    $arr[] = $i;
    }
    shuffle($arr);
    $str = implode(',',$arr);
    $int = floor($sum*0.3);
    $a = rtrim(substr($str,0,$int),',');var_dump($a);
      

  2.   

    string '36,108,93,123,133,138,267,145,51,220,27,81,179,139,237,181,255,147,172,10,242,11,82,20' (length=86)string '288,104,42,105,196,75,125,286,266,185,29,77,157,255,142,267,43,166,101,198,178,52,13,1' (length=86)
      

  3.   


    $sum = 288;
    $arr = array();
    for($i=1;$i<=$sum;$i++){
        $arr[] = $i;
    }
    shuffle($arr);$num = (int)($sum*0.3);
    echo implode(',',array_slice($arr, $num));
      

  4.   

    $a = range(1, 288);
    shuffle($a);
    $r = array_slice($a, -0.3 * count($a));
    print_r($r);
      

  5.   

    也可以$r = array_rand(array_flip(range(1,288)), 288 * 0.3);
    print_r($r);