婷婷综合国产,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實現的權重算法示例【可用于游戲根據權限來隨機物品】的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 台北市| 晋中市| 天镇县| 吴堡县| 梅河口市| 博乐市| 河间市| 鲁山县| 巴东县| 岑巩县| 吉林省| 吴堡县| 宜兰县| 泰安市| 江北区| 尚志市| 西藏| 秀山| 姜堰市| 博爱县| 龙里县| 醴陵市| 华蓥市| 呼图壁县| 洪湖市| 安溪县| 东至县| 正阳县| 志丹县| 渝中区| 湘潭县| 泰兴市| 峨山| 乌恰县| 会昌县| 旅游| 岱山县| 波密县| 包头市| 石渠县| 保定市|