第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

面試問題:發(fā)一個(gè)隨機(jī)紅包,100塊錢給10個(gè)人。每個(gè)人最多12塊錢,最少6塊錢。怎么分?

面試問題:發(fā)一個(gè)隨機(jī)紅包,100塊錢給10個(gè)人。每個(gè)人最多12塊錢,最少6塊錢。怎么分?

森欄 2018-07-31 16:33:08
以前想過一個(gè)類似問題,就是沒有每個(gè)人最大、最小的得錢數(shù)的限制,以前的問題可以很好用隨機(jī)數(shù)解決。于是這個(gè)問題也被以前的思想帶坑里了,把突破口完全放在了如何處理每個(gè)人的隨機(jī)數(shù)上。于是在面試時(shí)間就沒有解決這個(gè)問題,直到面試結(jié)束自己安靜下來,仔細(xì)想想,發(fā)現(xiàn)思路錯(cuò)了。我認(rèn)為正確的思路是:每個(gè)人先得6塊錢,這樣剩下40塊錢,之后每次拿出一塊錢,隨機(jī)分配給一個(gè)人,如果某個(gè)人的錢數(shù)達(dá)到了上限,那么這個(gè)人下次就沒有了再得到錢的資格了。這樣直到剩下錢都分配完。當(dāng)然在接口的實(shí)際處理上可以做些優(yōu)化,例如剩下的錢每次隨機(jī)分配的錢可以是隨機(jī)的(當(dāng)然這個(gè)隨機(jī)要做一些限制,以免一下就分配超額了),然后如果某個(gè)人錢+這次隨機(jī)分配的錢>每個(gè)人的上限,那么他就沒有資格得到這個(gè)錢了。隨機(jī)分配也好實(shí)現(xiàn),先算有幾個(gè)人有資格得到這筆錢,隨即一個(gè)數(shù),決定給第幾個(gè)符合資格的人。我的思路就是這樣,大家如果有更好的思路,請(qǐng)告知。謝謝。
查看完整描述

2 回答

?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

function microtime_float(){

    list($usec, $sec) = explode(" ", microtime());

    return ((float)$usec + (float)$sec);

}


function getRandParcent(){

    return rand(1,10)/rand(10,100);  

}



function randUserMoney($cash,$min=6,$max=12){

    $cash_ini = $cash;

    $user_arr = array($min,$min,$min,$min,$min,$min,$min,$min,$min,$min);

    $start = microtime_float();

    while($cash>0){

        $user_id = rand(0, 9);

        $rand_point = getRandParcent();

        if($user_arr[$user_id]<$max){

            $ing = microtime_float();

            if($ing-$start>0.01){

                return randUserMoney($cash_ini);

            }

            $rand_money = round($rand_point*$cash,2);

            $user_money = $user_arr[$user_id]+$rand_money ;

            if($user_money<$max){

                $user_arr[$user_id] = $user_money;

                $cash = $cash - $rand_money;

            }

        }

    }

    return [

    'user_money'=>$user_arr,

    'total_money'=>array_sum($user_arr),

    'excute_time'=>$ing-$start

    ];

}


var_dump(randUserMoney(40));


array (size=3)

  'user_money' => 

    array (size=10)

      0 => float 11.59

      1 => float 9.07

      2 => float 11.99

      3 => float 12

      4 => float 9.14

      5 => float 11.6

      6 => float 11.86

      7 => float 9.93

      8 => float 6

      9 => float 6.82

  'total_money' => float 100

  'excute_time' => float 0.004000186920166


查看完整回答
反對(duì) 回復(fù) 2018-08-06
?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊

$cash = 40;

$user_arr = array(6,6,6,6,6,6,6,6,6,6);

while($cash>0){

    $user_id = rand(0, 9);

    if($user_arr[$user_id]<12){

        $user_arr[$user_id]++;

        $cash--;

    }

}


;

var_dump($user_arr,array_sum($user_arr));die;



性能篇

$arr1=range(2,6);

shuffle($arr1);

$arr2=range(2,6);

shuffle($arr2);

$user_arr = array(6,6,6,6,6,6,6,6,6,6);

 for ($i=0;$i<10;$i++){

     

     if($i<=4){

         $user_arr[$i] += $arr1[$i];

     }else{

         $j = $i%5;

         $user_arr[$i] += $arr2[$j];

         

     }

 }

var_dump($user_arr,array_sum($user_arr));die;


查看完整回答
反對(duì) 回復(fù) 2018-08-06
  • 2 回答
  • 0 關(guān)注
  • 1204 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)