濮阳杆衣贸易有限公司

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

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

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

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

假設有數據:

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

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

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

今天突發(fā)奇想,寫了一套完美的權重算法,該算法有如下優(yōu)勢:

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,實現,的,權重,算法,示例,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP實現的權重算法示例【可用于游戲根據權限來隨機物品】》相關的同類信息!
  • 本頁收集關于PHP實現的權重算法示例【可用于游戲根據權限來隨機物品】的相關信息資訊供網民參考!
  • 推薦文章
    罗江县| 南投市| 蒙山县| 密山市| 沁源县| 辽阳县| 米易县| 亚东县| 正定县| 弋阳县| 林芝县| 伊春市| 惠东县| 南阳市| 樟树市| 容城县| 新乡市| 呼伦贝尔市| 河北区| 波密县| 碌曲县| 桑日县| 南澳县| 赤峰市| 平定县| 德惠市| 襄樊市| 洞头县| 屏边| 南溪县| 鄂伦春自治旗| 安图县| 汝阳县| 出国| 崇仁县| 渝中区| 安宁市| 教育| 呼玛县| 南京市| 东乌珠穆沁旗|