激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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网址在线观看 | 精品国产91久久久久久久妲己 | 国产精品视频一区二区三区四 | 午夜国产福利 | 国产自在自线午夜精品视频在 | 激情久久婷婷 | 成人爱爱电影 | 中国美女一级黄色大片 | 热re91久久精品国产99热 | 4480午夜| 91看片资源 | 精品亚洲一区二区三区 | 日韩中字在线 | 国产99久久精品一区二区 | 欧美乱论 | 91av国产在线 | 久久99精品久久久久久秒播放器 | 最新av在线免费观看 | 欧美日韩在线视频一区二区 | 日韩精品一二三区 | 国产精品美女久久久免费 | 欧美亚成人 | 免费日韩片 | 欧美一级鲁丝片免费看 | 性猛aa久久久 | 91 在线免费观看 | 日韩精品无码一区二区三区 | 日本成人一区二区 | 久草干| 久久人人爽人人爽人人片av高清 | 亚洲va久久久噜噜噜久久男同 | 久久伊人精品视频 | 中文字幕专区高清在线观看 | av免费在线不卡 | av免费在线免费观看 | 亚洲免费网站 | 久久久精品视 | 成人一级黄色 | 国产精品一区二区三区在线 | 国产精品久久久久久久久久10秀 |