刚从多年企业应用开发转向网页游戏开发,发现自己对这一领域很陌生。
今天写了一个从多条记录根据一定的概率抽取4个不同对象的功能,(只是算法中的一小部分)。概率值越大则对象的位置越后,发现了如果这个概率值落到了最后一个对象的位置,而不幸最后那个对象已经抽取了一次,这个时候就会出现问题了最后那个对象虽然落在抽取的区域不过不能被抽2次,因为只能抽取4次。这个时候咋办呢?
解决的方法是在最大值的后面加多4条记录这样就不会说抽不到对象了。
代码是:
INSERT INTO @PlayerTempletTempWeight select PlayerTempletID,Reactivity, HireLvl from PlayerTemplet where HireLvl <= @UserLVL order by PlayerTempletID
INSERT INTO @PlayerWeightTableTemp select PlayerTempletID , Weight = (select sum(Reactivity) from @PlayerTempletTempWeight b where b.PlayerTempletID <= a.PlayerTempletID and HireLvl <= @UserLVL ), HireLvl from @PlayerTempletTempWeight a where HireLvl <= @UserLVL order by a.PlayerTempletID asc
--INSERT INTO @PlayerWeightTableTemp select PlayerTempletID , Weight = (select sum(Reactivity) from PlayerTemplet b where b.PlayerTempletID<= a.PlayerTempletID and HireLvl <= @UserLVL order by a.PlayerTempletID ), HireLvl from PlayerTemplet a where HireLvl <= @UserLVL order by a.PlayerTempletID
select @WeightTotal = max(weight)+1 from @PlayerWeightTableTemp where HireLvl <= @UserLVL
INSERT INTO @PlayerWeightTableTemp select top 4 PlayerTempletID, Weight = @WeightTotal, HireLvl from @PlayerWeightTableTemp order by PlayerTempletID asc
SET @RandWeight = Convert(int,(rand()*@WeightTotal))
INSERT INTO @PlayerTempletTableTemp SELECT TOP 1 PT.PlayerTempletID,0 FROM @PlayerWeightTableTemp PT WHERE HireLvl <= @UserLVL AND Weight > @RandWeight order by Weight asc
SET @RandWeight = Convert(int,(rand()*@WeightTotal))
INSERT INTO @PlayerTempletTableTemp SELECT TOP 1 PT.PlayerTempletID,0 FROM @PlayerWeightTableTemp PT WHERE HireLvl <= @UserLVL AND Weight > @RandWeight AND PlayerTempletID NOT IN( SELECT PlayerTempletID FROM @PlayerTempletTableTemp) order by Weight asc
SET @RandWeight = Convert(int,(rand()*@WeightTotal))
INSERT INTO @PlayerTempletTableTemp SELECT TOP 1 PT.PlayerTempletID,0 FROM @PlayerWeightTableTemp PT WHERE HireLvl <= @UserLVL AND Weight > @RandWeight AND PlayerTempletID NOT IN( SELECT PlayerTempletID FROM @PlayerTempletTableTemp) order by Weight asc
SET @RandWeight = Convert(int,(rand()*@WeightTotal))
INSERT INTO @PlayerTempletTableTemp SELECT TOP 1 PT.PlayerTempletID,0 FROM @PlayerWeightTableTemp PT WHERE HireLvl <= @UserLVL AND Weight > @RandWeight AND PlayerTempletID NOT IN( SELECT PlayerTempletID FROM @PlayerTempletTableTemp) order by Weight asc
分享到:
相关推荐
通过对每个挂钩非空概率的分析,可以得出传送带的效率表达式,从而探讨提高效率的方法,如增加挂钩数量。 接下来的【报童的诀窍】是一个经典的库存管理问题。报童需要决定每天购买多少报纸以最大化长期平均收入。...
* 概率模型:包括概率的定义、概率的计算和概率模型的应用。 * 统计回归模型:包括统计回归模型的定义、统计回归模型的应用和统计回归模型的优缺点。 * 马氏链模型:包括马氏链模型的定义、马氏链模型的应用和马氏链...
通过建立数学模型,计算出一周期内每个挂钩非空的概率,从而得出效率。增加挂钩数m是提高效率的有效途径,而效率与n和m的关系是E ≈ n/2m,这表明效率与n成正比,与m成反比。 【9.2 报童的诀窍】介绍了报童如何根据...
【概率模型】是数学建模中的重要组成部分,用于描述和分析具有随机性的系统行为。在第九章中,我们探讨了几个具体的概率模型应用实例。 **9.1 传送系统的效率** 传送系统的效率评估了一个周期内传送带能运走的产品...
考生应当在掌握好基础知识的同时,也要学会一些答题的策略和方法,这样在实际考试中才能更好地发挥自己的水平,提高通过考试的可能性。对于那些自身条件并不十分理想,例如基础薄弱或者复习时间不足的考生,合理运用...
这种方法简单直观,但在大规模数据集上的计算效率较低。 ##### 学习理论(Learning Theory) 学习理论探讨了机器学习算法的有效性和可行性。它研究了算法如何随着数据量的增加而改进,以及如何评估模型的泛化能力...
1.4.5. 使用诀窍 1.4.6. 核函数 1.4.6.1. 自定义核 1.4.6.1.1. 使用 python 函数作为内核 1.4.6.1.2. 使用 Gram 矩阵 1.4.6.1.3. RBF 内核参数 1.4.7. 数学公式 1.4.7.1. SVC 1.4.7.2. NuSVC 1.4.7.3. SVR 1.4.8. ...
### 纳米级制造工艺的智能化控制 #### 智能控制在纳米级制造工艺中的影响 ...随着机器学习、人工智能、云计算和边缘计算等技术的不断发展,未来的纳米级制造将更加智能化、高效化,有望推动更多高科技领域的发展。
1. **需求分布**:报童需要预测每日报纸的需求量,这通常假设为某种概率分布,如正态分布、泊松分布等。 2. **订购成本**:每份报纸的订购成本是固定的,未售出的报纸会产生这部分成本。 3. **零售价格**:卖出每份...
如果猜中概率p=1/2代表没有诀窍,原假设H0为p=1/2,备择假设Ha为p>1/2。由于n=100较大,可以使用正态近似,Z=(X̄ - p0) / sqrt[p0(1-p0)/n] = (60 - 50) / sqrt[0.5*0.5/100] ≈ 1.306,这个值大于Zα/2=1.306(α=...
- **概率论、概率分布、假设检验、回归分析**:这些是统计学中更深层次的主题,涵盖概率的定义、各种概率分布的特性、统计推断中的假设检验方法和回归分析技术。 ### 数据生活 - **数据预测、人口数据分析**:这...
- **求解方法**:利用单纯形法等优化算法求解。 #### 五、微分方程模型 **5.1 传染病模型** - **基本原理**:基于SIR模型(易感者-感染者-移除者模型),研究传染病传播规律。 - **应用案例**:COVID-19疫情分析...
这种计算方法被广泛应用于债券定价和其他金融工具的估值中。 ### 14. **国际金融市场结构** - 当前的国际金融市场主要由四大市场构成,包括**外汇市场、资本市场、商品市场以及衍生品市场**等。这些市场在全球经济...
- **基于候选区域的方法**:如R-CNN系列算法,先找到潜在的目标位置,再进行分类。 - **端到端的方法**:如YOLO(You Only Look Once),可以直接从输入图像预测出物体类别及其边界框。 **人脸识别与验证(Face ...