页次 1
針對第一個問題,我讓chatGPT用python計算了一下結果 ,結果如下:
首次發生該事件最有可能出現在第 1009次,此時的概率約爲 6.28%。
离线
我檢查了一下,下面的代碼應該沒有錯。並且驗證了最終求和結果也爲1。
# 定义发生概率的函数
def occurrence_probability(k):
if k < 1000:
return 0 # 前999次发生概率为0
prob = 1.0
for i in range(1000, k): # 计算前 k-1 次未发生的概率
prob *= (1 - (i - 999) / 100)
if prob < 1e-10: # 避免过小的概率
break
prob *= (k - 999) / 100 # 第 k 次发生的概率
return prob
# 计算从第1000次到第1099次首次发生的概率
k_range = range(1000, 1100)
probabilities_range = [occurrence_probability(k) for k in k_range]
# 输出概率列表
for k, prob in zip(k_range, probabilities_range):
print(f"第 {k} 次的概率: {prob:.10f}")
# 求和验证
total_prob = sum(probabilities_range)
print(f"从第1000次到第1099次的概率总和: {total_prob:.10f}")
輸出的結果爲:
第 1000 次的概率: 0.0100000000
第 1001 次的概率: 0.0198000000
第 1002 次的概率: 0.0291060000
第 1003 次的概率: 0.0376437600
第 1004 次的概率: 0.0451725120
第 1005 次的概率: 0.0514966637
第 1006 次的概率: 0.0564746745
第 1007 次的概率: 0.0600245112
第 1008 次的概率: 0.0621253691
第 1009 次的概率: 0.0628156510
第 1010 次的概率: 0.0621874944
第 1011 次的概率: 0.0603784037
第 1012 次的概率: 0.0575607449
第 1013 次的概率: 0.0539299902
第 1014 次的概率: 0.0496926338
第 1015 次的概率: 0.0450546547
第 1016 次的概率: 0.0402112793
从第1000次到第1099次的概率总和: 1.0000000014
离线
我犯了一個錯,把題目裏的“‰”看成“%”了。
更正這個錯誤後,最終結果是:
第1031年概率最高,概率爲0.0193839289。
我的思路應該沒有錯誤,由於死亡的事件發生只分布在第1000年至第1999年。
每一年對應的概率計算如下:
第1000次的概率是0.001
第1001次是0.999×0.002
第1002次是0.999×0.998×0.003
第1003次是0.999×0.998×0.997×0.004
......
我學這些已經是很久前了,我不記得這叫什麼分佈了。
總之概率將從第1000年開始逐漸增大,到達峯值後開始逐漸減小。
由於事件必定發生在區間第1000年至第1999年(第1999死亡概率爲1),對此區間上的每一年的概率求和,結果將爲1,可以以此驗證步驟正確性。我已驗證過結果正確性。
具體代碼如下:
# 定义发生概率的函数
def occurrence_probability(k):
if k < 1000:
return 0 # 前999次发生概率为0
prob = 1.0
for i in range(1000, k): # 计算前 k-1 次未发生的概率
prob *= (1 - (i - 999) / 1000)
if prob < 1e-10: # 避免过小的概率
break
prob *= (k - 999) / 1000 # 第 k 次发生的概率
return prob
# 计算从第1000次到第1999次首次发生的概率
k_range = range(1000, 2000)
probabilities_range = [occurrence_probability(k) for k in k_range]
# 输出概率列表
for k, prob in zip(k_range, probabilities_range):
print(f"第 {k} 次的概率: {prob:.10f}")
# 求和验证
total_prob = sum(probabilities_range)
print(f"从第1000次到第1999次的概率总和: {total_prob:.10f}")
离线
把坑全部踩了一遍,最後我的結果也是1015,概率爲0.066704
离线
第二個像是我學編程時,書上的作業題。
還是扔給chatGPT寫代碼。
# 动态调整方案代码(将单位从ms转换为s)
# 初始参数
attack = 100 # 初始攻击力
interval = 1.0 # 初始攻击间隔(s)
points = 100 # 升级点数
attack_increase = 1.5 # 每次提升攻击力
interval_multiplier = 0.99 # 每次攻击间隔缩短的比例
# 记录最终分配
attack_upgrades = 0
interval_upgrades = 0
# 动态分配点数
for _ in range(points):
# 计算两种升级后的DPS
dps_increase_attack = (attack + attack_increase) / interval
dps_increase_interval = attack / (interval * interval_multiplier)
# 比较收益,选择收益更高的升级
if dps_increase_attack > dps_increase_interval:
attack += attack_increase
attack_upgrades += 1
else:
interval *= interval_multiplier
interval_upgrades += 1
# 最终DPS
final_dps = attack / interval
# 输出结果
print(f"动态调整:攻击力升级 {attack_upgrades} 次,攻击间隔升级 {interval_upgrades} 次")
print(f"最大DPS为 {final_dps:.2f}")
結果是:
动态调整:攻击力升级 33 次,攻击间隔升级 67 次
最大DPS为 293.15
离线
利用了一點小技巧解決問題3
通過求解單位“幼龍”對最終“太古龍”合成期望的貢獻,最後能輕易求出答案。
仍然是chatGPT編寫的代碼,使用了更精確的數據類型以避免較大誤差:
from decimal import Decimal, getcontext
# 设置高精度
getcontext().prec = 50
def calculate_min_level1_items(target_expectation=Decimal('0.75')):
# 定义每级物品所需等级1物品数量(用高精度Decimal表示)
level2_cost = Decimal('4.5') # 合成1个等级2需要的等级1数量
level3_cost = level2_cost * Decimal('3') # 合成1个等级3
level4_cost = level3_cost * Decimal('3') # 合成1个等级4
level5_cost = level4_cost * Decimal('3') # 合成1个等级5
# 计算各等级单位等级1物品的贡献
unit_contribution_level2 = Decimal('1') / level2_cost
unit_contribution_level3 = Decimal('1') / level3_cost
unit_contribution_level4 = Decimal('1') / level4_cost
unit_contribution_level5 = Decimal('1') / level5_cost
# 计算单位等级1物品对等级5的期望贡献
total_unit_contribution = unit_contribution_level5
# 计算所需等级1物品数量
min_level1_items = target_expectation / total_unit_contribution
# 返回向上取整的结果(因为物品数量必须为整数)
return min_level1_items.to_integral_exact(rounding='ROUND_CEILING')
# 调用函数
result = calculate_min_level1_items()
print(f"获得0.75个等级五物品至少需要的等级一物品数量: {result}")
輸出的結果爲:
获得0.75个等级五物品至少需要的等级一物品数量: 92
即需要92只幼龍。
离线
代碼還是錯的,chatGPT默認只考慮了第一步合成需要計算期望值,不檢查都沒注意到。
應該是這樣:
from decimal import Decimal, getcontext
# 设置高精度
getcontext().prec = 50
def calculate_min_level1_items(target_expectation=Decimal('0.75')):
# 定义每级物品所需等级1物品数量(用高精度Decimal表示)
level2_cost = Decimal('5') # 合成1个等级2需要的等级1数量
level3_cost = level2_cost * Decimal('5') # 合成1个等级3
level4_cost = level3_cost * Decimal('5') # 合成1个等级4
level5_cost = level4_cost * Decimal('5') # 合成1个等级5
# 计算各等级单位等级1物品的贡献
unit_contribution_level2 = Decimal('1') / level2_cost
unit_contribution_level3 = Decimal('1') / level3_cost
unit_contribution_level4 = Decimal('1') / level4_cost
unit_contribution_level5 = Decimal('1') / level5_cost
# 计算单位等级1物品对等级5的期望贡献
total_unit_contribution = unit_contribution_level5
# 计算所需等级1物品数量
min_level1_items = target_expectation / total_unit_contribution
# 返回向上取整的结果(因为物品数量必须为整数)
return min_level1_items.to_integral_exact(rounding='ROUND_CEILING')
# 调用函数
result = calculate_min_level1_items()
print(f"获得0.75个等级五物品至少需要的等级一物品数量: {result}")
結果是:
获得0.75个等级五物品至少需要的等级一物品数量: 469
(不能編輯帖子真的好麻煩)💦
离线
页次 1