{"id":370,"date":"2018-06-19T09:28:18","date_gmt":"2018-06-19T01:28:18","guid":{"rendered":"http:\/\/www.cxybj.com\/?p=370"},"modified":"2018-06-19T09:29:37","modified_gmt":"2018-06-19T01:29:37","slug":"php%e6%a6%82%e7%8e%87%e7%ae%97%e6%b3%95%e5%92%8c%e4%bc%98%e6%83%a0%e5%88%b8%e7%94%9f%e6%88%90%e9%80%82%e7%94%a8%e4%ba%8e%e6%8a%bd%e5%a5%96%e3%80%81%e9%9a%8f%e6%9c%ba%e5%b9%bf%e5%91%8a%e3%80%81","status":"publish","type":"post","link":"https:\/\/www.cxybj.com\/?p=370","title":{"rendered":"PHP\u6982\u7387\u7b97\u6cd5\u548c\u4f18\u60e0\u5238\u751f\u6210[\u9002\u7528\u4e8e\u62bd\u5956\u3001\u968f\u673a\u5e7f\u544a\u3001\u4f18\u60e0\u5238]"},"content":{"rendered":"<h4>PHP\u6982\u7387\u7b97\u6cd5\u7b97\u6cd5\u4e00<\/h4>\n<pre>\/**\r\n * \u5168\u6982\u7387\u8ba1\u7b97\r\n *\r\n * @param array $p array('a'=&gt;0.5,'b'=&gt;0.2,'c'=&gt;0.4)\r\n * @return string \u8fd4\u56de\u4e0a\u9762\u6570\u7ec4\u7684key\r\n *\/\r\nfunction random($ps){\r\n    static $arr = array();\r\n    $key = md5(serialize($ps));\r\n\r\n    if (!isset($arr[$key])) {\r\n        $max = array_sum($ps);\r\n        foreach ($ps as $k=&gt;$v) {\r\n            $v = $v \/ $max * 10000;\r\n            for ($i=0; $i&lt;$v; $i++) $arr[$key][] = $k;\r\n        }\r\n    }\r\n    return $arr[$key][mt_rand(0,count($arr[$key])-1)];\r\n} \r\n<strong>PHP\u6982\u7387\u7b97\u6cd5\u7b97\u6cd5\u4e8c<\/strong><\/pre>\n<pre>function get_rand($proArr) { \r\n    $result = ''; \r\n\r\n    \/\/\u6982\u7387\u6570\u7ec4\u7684\u603b\u6982\u7387\u7cbe\u5ea6\r\n    $proSum = array_sum($proArr); \r\n\r\n    \/\/\u6982\u7387\u6570\u7ec4\u5faa\u73af\r\n    foreach ($proArras$key =&gt; $proCur) { \r\n        $randNum = mt_rand(1, $proSum); \r\n        if ($randNum &lt;= $proCur) { \r\n            $result = $key; \r\n            break; \r\n        } else { \r\n            $proSum -= $proCur; \r\n        } \r\n    } \r\n    unset ($proArr); \r\n\r\n    return$result; \r\n}\r\n<\/pre>\n<p>\u4e0a\u8ff0\u4ee3\u7801\u662f\u4e00\u6bb5\u7ecf\u5178\u7684\u6982\u7387\u7b97\u6cd5\uff0c$proArr\u662f\u4e00\u4e2a\u9884\u5148\u8bbe\u7f6e\u7684\u6570\u7ec4\uff0c\u5047\u8bbe\u6570\u7ec4\u4e3a\uff1aarray(100,200,300\uff0c400)\uff0c\u5f00\u59cb\u662f\u4ece1,1000\u8fd9\u4e2a\u6982\u7387\u8303\u56f4\u5185\u7b5b\u9009\u7b2c\u4e00\u4e2a\u6570\u662f\u5426\u5728\u4ed6\u7684\u51fa\u73b0\u6982\u7387\u8303\u56f4\u4e4b\u5185\uff0c \u5982\u679c\u4e0d\u5728\uff0c\u5219\u5c06\u6982\u7387\u7a7a\u95f4\uff0c\u4e5f\u5c31\u662fk\u7684\u503c\u51cf\u53bb\u521a\u521a\u7684\u90a3\u4e2a\u6570\u5b57\u7684\u6982\u7387\u7a7a\u95f4\uff0c\u5728\u672c\u4f8b\u5f53\u4e2d\u5c31\u662f\u51cf\u53bb100\uff0c\u4e5f\u5c31\u662f\u8bf4\u7b2c\u4e8c\u4e2a\u6570\u662f\u57281\uff0c900\u8fd9\u4e2a\u8303\u56f4\u5185\u7b5b\u9009\u7684\u3002\u8fd9\u6837\u7b5b\u9009\u5230\u6700\u7ec8\uff0c\u603b\u4f1a\u6709\u4e00\u4e2a\u6570\u6ee1\u8db3\u8981\u6c42\u3002\u5c31\u76f8\u5f53\u4e8e\u53bb\u4e00\u4e2a\u7bb1\u5b50\u91cc\u6478\u4e1c\u897f\uff0c\u7b2c\u4e00\u4e2a\u4e0d\u662f\uff0c\u7b2c\u4e8c\u4e2a\u4e0d\u662f\uff0c\u7b2c\u4e09\u4e2a\u8fd8\u4e0d\u662f\uff0c\u90a3\u6700\u540e\u4e00\u4e2a\u4e00\u5b9a\u662f\u3002\u8fd9\u4e2a\u7b97\u6cd5\u7b80\u5355\uff0c\u800c\u4e14\u6548\u7387\u975e\u5e38\u9ad8\uff0c\u5173\u952e\u662f\u8fd9\u4e2a\u7b97\u6cd5\u5df2\u5728\u6211\u4eec\u4ee5\u524d\u7684\u9879\u76ee\u4e2d\u6709\u5e94\u7528\uff0c\u5c24\u5176\u662f\u5927\u6570\u636e\u91cf\u7684\u9879\u76ee\u4e2d\u6548\u7387\u975e\u5e38\u68d2\u3002<\/p>\n<p>\u63a5\u4e0b\u6765\u6211\u4eec\u901a\u8fc7PHP\u914d\u7f6e\u5956\u9879\u3002<\/p>\n<pre>$prize_arr = array( \r\n    '0' =&gt; array('id'=&gt;1,'prize'=&gt;'\u5e73\u677f\u7535\u8111','v'=&gt;1), \r\n    '1' =&gt; array('id'=&gt;2,'prize'=&gt;'\u6570\u7801\u76f8\u673a','v'=&gt;5), \r\n    '2' =&gt; array('id'=&gt;3,'prize'=&gt;'\u97f3\u7bb1\u8bbe\u5907','v'=&gt;10), \r\n    '3' =&gt; array('id'=&gt;4,'prize'=&gt;'4G\u4f18\u76d8','v'=&gt;12), \r\n    '4' =&gt; array('id'=&gt;5,'prize'=&gt;'10Q\u5e01','v'=&gt;22), \r\n    '5' =&gt; array('id'=&gt;6,'prize'=&gt;'\u4e0b\u6b21\u6ca1\u51c6\u5c31\u80fd\u4e2d\u54e6','v'=&gt;50), \r\n);   \r\n<\/pre>\n<p>\u4e2d\u662f\u4e00\u4e2a\u4e8c\u7ef4\u6570\u7ec4\uff0c\u8bb0\u5f55\u4e86\u6240\u6709\u672c\u6b21\u62bd\u5956\u7684\u5956\u9879\u4fe1\u606f\uff0c\u5176\u4e2did\u8868\u793a\u4e2d\u5956\u7b49\u7ea7\uff0cprize\u8868\u793a\u5956\u54c1\uff0cv\u8868\u793a\u4e2d\u5956\u6982\u7387\u3002\u6ce8\u610f\u5176\u4e2d\u7684v\u5fc5\u987b\u4e3a\u6574\u6570\uff0c\u4f60\u53ef\u4ee5\u5c06\u5bf9\u5e94\u7684\u5956\u9879\u7684v\u8bbe\u7f6e\u62100\uff0c\u5373\u610f\u5473\u7740\u8be5\u5956\u9879\u62bd\u4e2d\u7684\u51e0\u7387\u662f0\uff0c\u6570\u7ec4\u4e2dv\u7684\u603b\u548c\uff08\u57fa\u6570\uff09\uff0c\u57fa\u6570\u8d8a\u5927\u8d8a\u80fd\u4f53\u73b0\u6982\u7387\u7684\u51c6\u786e\u6027\u3002\u672c\u4f8b\u4e2dv\u7684\u603b\u548c\u4e3a100\uff0c\u90a3\u4e48\u5e73\u677f\u7535\u8111\u5bf9\u5e94\u7684\u4e2d\u5956\u6982\u7387\u5c31\u662f1%\uff0c\u5982\u679cv\u7684\u603b\u548c\u662f10000\uff0c\u90a3\u4e2d\u5956\u6982\u7387\u5c31\u662f\u4e07\u5206\u4e4b\u4e00\u4e86\u3002<\/p>\n<p>\u6bcf\u6b21\u524d\u7aef\u9875\u9762\u7684\u8bf7\u6c42\uff0cPHP\u5faa\u73af\u5956\u9879\u8bbe\u7f6e\u6570\u7ec4\uff0c\u901a\u8fc7\u6982\u7387\u8ba1\u7b97\u51fd\u6570get_rand\u83b7\u53d6\u62bd\u4e2d\u7684\u5956\u9879id\u3002\u5c06\u4e2d\u5956\u5956\u54c1\u4fdd\u5b58\u5728\u6570\u7ec4$res[&#8216;yes&#8217;]\u4e2d\uff0c\u800c\u5269\u4e0b\u7684\u672a\u4e2d\u5956\u7684\u4fe1\u606f\u4fdd\u5b58\u5728$res[&#8216;no&#8217;]\u4e2d\uff0c\u6700\u540e\u8f93\u51fajson\u4e2a\u6570\u6570\u636e\u7ed9\u524d\u7aef\u9875\u9762\u3002<\/p>\n<pre>foreach ($prize_arras$key =&gt; $val) { \r\n    $arr[$val['id']] = $val['v']; \r\n} \r\n\r\n$rid = get_rand($arr); \/\/\u6839\u636e\u6982\u7387\u83b7\u53d6\u5956\u9879id\r\n\r\n$res['yes'] = $prize_arr[$rid-1]['prize']; \/\/\u4e2d\u5956\u9879\r\nunset($prize_arr[$rid-1]); \/\/\u5c06\u4e2d\u5956\u9879\u4ece\u6570\u7ec4\u4e2d\u5254\u9664\uff0c\u5269\u4e0b\u672a\u4e2d\u5956\u9879\r\nshuffle($prize_arr); \/\/\u6253\u4e71\u6570\u7ec4\u987a\u5e8f\r\nfor($i=0;$i&lt;count($prize_arr);$i++){ \r\n    $pr[] = $prize_arr[$i]['prize']; \r\n} \r\n$res['no'] = $pr; \r\necho json_encode($res);  \r\n\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>PHP\u6982\u7387\u7b97\u6cd5\u7b97\u6cd5\u4e00 \/** * \u5168\u6982\u7387\u8ba1\u7b97 * * @pa &hellip; <a href=\"https:\/\/www.cxybj.com\/?p=370\" class=\"more-link\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/www.cxybj.com\/index.php?rest_route=\/wp\/v2\/posts\/370"}],"collection":[{"href":"https:\/\/www.cxybj.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cxybj.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cxybj.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cxybj.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=370"}],"version-history":[{"count":1,"href":"https:\/\/www.cxybj.com\/index.php?rest_route=\/wp\/v2\/posts\/370\/revisions"}],"predecessor-version":[{"id":371,"href":"https:\/\/www.cxybj.com\/index.php?rest_route=\/wp\/v2\/posts\/370\/revisions\/371"}],"wp:attachment":[{"href":"https:\/\/www.cxybj.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=370"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cxybj.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=370"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cxybj.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=370"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}