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

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

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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人涩涩屋福利视频 | av在线色 | 成人午夜毛片 | 国内自拍网红在线综合 | 五月激激激综合网色播免费 | 紧致肉肉高h | 99视频精品全部免费观看 | 免费看国产一级特黄aa大片 | 德国高清freexxxx性 | 狠狠色狠狠色综合婷婷tag | 狠狠婷婷综合缴情亚洲 | 性做久久久久久久久浪潮 | 高清男的插曲女的 欢迎你老狼 | 动漫女性扒开尿口羞羞漫画 | 办公室恋情在线观看 | 亚洲区视频在线观看 | 52zfl宅福利yxpjw | 完整秽淫刺激长篇小说 | 精品精品精品 | 欧美人交性视频在线香蕉 | 亚洲国产欧美在线看片 | 桃色导航| 美女全身无遮挡 | 美女被狂干 | 男女羞羞的视频 | 国产精品久久毛片完整版 | 91精品国产美女福到在线不卡 | 暖暖的视频完整视频韩国免费 | ckinese中国男同gay男男 | 亚洲精品中文字幕第一区 | 美女口述又粗又大感觉 | 久久久WWW免费人成精品 | 无遮挡激情 | 日本妇人成熟免费不卡片 | 亚洲swag精品自拍一区 | 成人啪啪漫画羞羞漫画www网站 | 无遮挡h肉动漫在线观看电车 | 福利片福利一区二区三区 | 百合漫画咱啪全彩抚慰 | 国产人成激情视频在线观看 | 日本视频免费在线 |