改变参考值时保持相同的退化步骤
Keeping the same step of degradation when changing the reference value
我正在编写这段代码,它通过一个循环遍历值列表,并寻找与参考值相比超过 5% 的变化(我称之为退化)。如果“退化”超过 5%,该参考值将发生变化,并将转移到下一个值。
问题:
当我们从 1 到 0.95 时,它下降了 5%(因为 1 的 5% 是 0.05,差值是 1 - 0.05 = 0.95)所以很好。
但是当我们移动到 ref = 0.95 时,5% 的退化将是 0.0475,即 0.95 - 0.0475 = 0.9025 而不是 0.9(数学上的逻辑,但不是我想要的)。
我想要什么:
- 我希望代码在退化超过 5% 时保持移动参考值 和 同时保持 0.05 步长。
randomlist = [1, 0.98, 0.95, 0.93, 0.9, 0.87, 0.85, 0.82, 0.8, 0.78, 0.75, 0.72, 0.7]
Degradation = 5
ref = randomlist[0]
for i in randomlist:
if (1 - (i / ref)) * 100 > Degradation:
ref = i
continue
我的代码没有考虑到这一点。
如果我没理解错的话,你所做的是减少当前值的 5%。
你应该做的是减少一个常数值或初始值的百分比。
所以每次循环都是-0.05。
randomlist = [1, 0.98, 0.95, 0.93, 0.9, 0.87, 0.85, 0.82, 0.8, 0.78, 0.75, 0.72, 0.7]
Degradation = 10
five_percent_Degradation = Degradation * 0.05
ref = randomlist[0]
for i in randomlist:
if (1 - (i / ref)) * 100 > Degradation:
ref = i
Degradation -= five_percent_Degradation
print(Degradation)
我设法找到了解决方案:
randomlist = [1, 0.98, 0.95, 0.93, 0.9, 0.87, 0.85, 0.82, 0.8, 0.78, 0.75, 0.72, 0.7]
Degradation = 10
ref = randomlist[0]
for i in randomlist:
if round((ref - i) * 100) >= Degradation:
ref = i
continue
我正在编写这段代码,它通过一个循环遍历值列表,并寻找与参考值相比超过 5% 的变化(我称之为退化)。如果“退化”超过 5%,该参考值将发生变化,并将转移到下一个值。
问题:
当我们从 1 到 0.95 时,它下降了 5%(因为 1 的 5% 是 0.05,差值是 1 - 0.05 = 0.95)所以很好。
但是当我们移动到 ref = 0.95 时,5% 的退化将是 0.0475,即 0.95 - 0.0475 = 0.9025 而不是 0.9(数学上的逻辑,但不是我想要的)。
我想要什么:
- 我希望代码在退化超过 5% 时保持移动参考值 和 同时保持 0.05 步长。
randomlist = [1, 0.98, 0.95, 0.93, 0.9, 0.87, 0.85, 0.82, 0.8, 0.78, 0.75, 0.72, 0.7]
Degradation = 5
ref = randomlist[0]
for i in randomlist:
if (1 - (i / ref)) * 100 > Degradation:
ref = i
continue
我的代码没有考虑到这一点。
如果我没理解错的话,你所做的是减少当前值的 5%。
你应该做的是减少一个常数值或初始值的百分比。 所以每次循环都是-0.05。
randomlist = [1, 0.98, 0.95, 0.93, 0.9, 0.87, 0.85, 0.82, 0.8, 0.78, 0.75, 0.72, 0.7]
Degradation = 10
five_percent_Degradation = Degradation * 0.05
ref = randomlist[0]
for i in randomlist:
if (1 - (i / ref)) * 100 > Degradation:
ref = i
Degradation -= five_percent_Degradation
print(Degradation)
我设法找到了解决方案:
randomlist = [1, 0.98, 0.95, 0.93, 0.9, 0.87, 0.85, 0.82, 0.8, 0.78, 0.75, 0.72, 0.7]
Degradation = 10
ref = randomlist[0]
for i in randomlist:
if round((ref - i) * 100) >= Degradation:
ref = i
continue