一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP實現的權重算法示例【可用于游戲根據權限來隨機物品】

PHP實現的權重算法示例【可用于游戲根據權限來隨機物品】

2019-06-14 10:21ybhjx服務器之家 PHP教程

這篇文章主要介紹了PHP實現的權重算法,可用于游戲根據權限來隨機物品,涉及php數組遍歷、隨機數處理及數值運算相關操作技巧,需要的朋友可以參考下

本文實例講述了PHP實現的權重算法。分享給大家供大家參考,具體如下:

假設有數據:

$data = array (
 array (
 'id' => 1,
 'name' => '張三',
 'weight' => 5
 ),
 array (
 'id' => 2,
 'name' => '王五',
 'weight' => 10
 ),
 array (
 'id' => 3,
 'name' => '李四',
 'weight' => 15
 ),
);

要隨機取出其中一條,并且不是完全隨機,而是根據其中weight的數值,按照數值越大,幾率越高的規律取出。

以前寫過一些權重算法,可是都不完美,要么數據量有限制,要么weight之和必須等于一個指定的數等等,都不完善。

今天突發奇想,寫了一套完美的權重算法,該算法有如下優勢:

1. 支持無限多個數據

2. weight值之和任意

3. 不存在兩個weight值一樣時無法平均分配的bug

算法如下:

$data = array (
 array (
 'id' => 1,
 'name' => '張三',
 'weight' => 5
 ),
 array (
 'id' => 2,
 'name' => '王五',
 'weight' => 10
 ),
 array (
 'id' => 3,
 'name' => '李四',
 'weight' => 15
 ),
);
$weight = 0;
$tempdata = array ();
foreach ($data as $one) {
 $weight += $one['weight'];
 for ($i = 0; $i < $one['weight']; $i++) {
 $tempdata[] = $one;
 }
}
$use = rand(0, $weight -1);
$one = $tempdata[$use];
var_dump($one);

運行結果:

array(3) {
  ["id"]=>
  int(2)
  ["name"]=>
  string(4) "王五"
  ["weight"]=>
  int(10)
}

希望本文所述對大家PHP程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: se01在线看片 | 国产精品亚洲片在线不卡 | 亚洲va天堂va国产va久久 | 国产成人成人一区二区 | 天堂一区二区在线观看 | 高肉h护士办公室play | 91九色视频无限观看免费 | 1769最新资源站 | 国产成人在线免费视频 | 色中色导航 | 91外围| 91麻豆精品国产 | 鬼吹灯天星术在线高清观看 | 四虎国产精品免费久久麻豆 | 99久久国产亚洲综合精品 | 欧美一区二区三区四区在线观看 | 成年性香蕉漫画在线观看 | 九九99香蕉在线视频免费 | 青草视频网站 | 日韩精品视频在线观看免费 | 精品亚洲午夜久久久久 | 天天色综合久久 | 成年视频在线观看 | 色哟哟在线资源 | 短篇同学新婚h系列小说 | 四虎精品免费国产成人 | 美琪美腿白丝交小说 | 国产区香蕉精品系列在线观看不卡 | 日韩在线免费 | 国产精品乱码高清在线观看 | 好紧好爽再叫浪一点点潘金莲 | 天堂8在线天堂资源bt | 欧美同性猛男videos | 九色PORNY真实丨国产免费 | 日韩欧美亚洲每日更新网 | 毛片免 | 日本人交换乱理伦片 | 成年人黄视频在线观看 | 欧美日韩1区2区 | 国产按摩系列 | 国产馆精品推荐在线观看 |