婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

熱門標簽:地圖標注風向標 浙江外呼電話系統軟件 臨沂智能電銷機器人軟件 銀川ai電話機器人 十堰ai電話機器人效果怎么樣 電梯外呼線路板維修視頻 安陽自動外呼系統價格是多少 上海公司外呼系統線路 芒果電銷機器人

本文實例講述了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相關內容感興趣的讀者可查看本站專題:《PHP數據結構與算法教程》、《php程序設計算法總結》、《php字符串(string)用法總結》、《PHP數組(Array)操作技巧大全》、《PHP常用遍歷算法與技巧總結》及《PHP數學運算技巧總結》

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

您可能感興趣的文章:
  • round robin權重輪循算法php實現代碼
  • php實現按照權重隨機排序數據的方法
  • php權重計算方法代碼分享
  • 適用于抽獎程序、隨機廣告的PHP概率算法實例
  • php中通過數組進行高效隨機抽取指定條記錄的算法
  • 微信紅包隨機生成算法php版
  • 微信隨機生成紅包金額算法php版
  • PHP實現的隨機紅包算法示例

標簽:荊門 遵義 吐魯番 徐州 武威 常州 寧夏 遂寧

巨人網絡通訊聲明:本文標題《PHP實現的權重算法示例【可用于游戲根據權限來隨機物品】》,本文關鍵詞  PHP,實現,的,權重,算法,示例,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現的權重算法示例【可用于游戲根據權限來隨機物品】》相關的同類信息!
  • 本頁收集關于PHP實現的權重算法示例【可用于游戲根據權限來隨機物品】的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 怀来县| 恭城| 榆树市| 成武县| 东方市| 湛江市| 尼玛县| 太湖县| 分宜县| 永昌县| 西吉县| 河曲县| 灵山县| 嘉善县| 宿迁市| 朝阳区| 穆棱市| 堆龙德庆县| 普宁市| 莫力| 当阳市| 田阳县| 武清区| 黄石市| 中阳县| 全椒县| 景泰县| 台南市| 蓬溪县| 台南市| 长顺县| 慈利县| 都昌县| 洮南市| 交口县| 北碚区| 汾西县| 大邑县| 巍山| 东明县| 南平市|