You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:开发基于成本的Odds计算与Odds分布算法

本人英文水平有限,在此提前致歉。

一、任务说明与运行机制

需开发一款算法,输入为包含cost字段的物品数组,以及单次获取皮肤的成本$get_cost,示例数据如下:

$get_cost = 10;
$items = [
    ['cost' => 5],
    ['cost' => 10],
    ['cost' => 20]
];

通过筛选方法,已计算出部分输入对应的概率表(示例如下),表中展示了各物品的概率分布情况:

+———–+—–——–+——–—+
 | 5  | 10  | 20 |
 +——––+——–––+—–——+
 | 0  | 100 | 0  |
 | 10 | 85  | 5  |
 | 20 | 70  | 10 |
 | 30 | 55  | 15 |
 | 40 | 40  | 20 |
 | 50 | 25  | 25 |
 | 60 | 10  | 30 |
 +——––+——–––+—–——+

已删除部分筛选用数据,避免干扰

以下为基于概率进行随机选择的代码示例(JS版用于测试,PHP版用于物品选择):

JS测试代码

var get_cost = 10;
var sum = 0;
for (var i = 0; i < 10000000; i++) {
  var rand = Math.floor(Math.random() * 100) + 1 // generate a number from 1 to 100
  if (rand <= 40) sum += 5; // 40% chance
  else if (rand <= 80) sum += 10; // 40% chance
  else if (rand <= 100) sum += 20; // 20% chance
}
document.getElementById('cost_get').innerHTML = i * get_cost;
document.getElementById('sum_get').innerHTML = sum;
<div id="cost_get"></div>
<div id="sum_get"></div>

PHP物品选择代码

$items = [
    ['cost' => 5, 'chance' => 40],
    ['cost' => 10, 'chance' => 40],
    ['cost' => 20, 'chance' => 20]
];

foreach ($items as $key => &$item) {
    if (isset($items[$key - 1])) $item['chance'] += $items[$key - 1]['chance'];
}

function getRandItem($items) {
    $rand = rand(1, 100);
    foreach ($items as $item) {
        if ($rand <= $item['chance']) return $item;
    }
}

print_r(getRandItem($items));
二、理论分析

查阅了概率理论相关资料,推测需采用拉普拉斯分布,但仅为个人观点。通过整理概率数据,发现以下规律:

  • 若输入2个物品,仅存在1种概率分布方案;若为3个及以上,方案数量大幅增加;
  • 若存在等于$get_cost的物品,必然存在其概率为100%的方案;若为3个及以上物品,还存在其概率为0%的方案;
  • 例外情况:所有物品的cost均小于或大于$get_cost时,概率方案数量可能为0。
三、求助内容

观察到概率呈线性增减的固定规律,但无法推导通用计算公式,恳请协助开发该概率计算与分布算法,可提供报酬。代码可使用任意语言编写,相关代码已简化以便理解。再次致歉可能存在的表述错误,感谢关注!

内容的提问来源于stack exchange,提问作者David Meyster

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:13:11