目录
Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
欢迎志同道合者一起交流学习,我的QQ:94509325/微信
最接近目标的值(The Value Closest To The Target)算法在多个领域都有实际应用,常见应用场景如下:
1、推荐系统:在推荐系统中,该算法可以用于为用户推荐最符合其兴趣和需求的物品或服务。例如,电影推荐系统可以根据用户的观影历史和评分,推荐最接近用户目标评分的电影列表。这可以提高用户的满意度和系统的推荐准确性。
2、数据分析:在预测模型中,如果无法精确预测,可以找出最接近预测值的实际数据点,用于评估模型的性能。例如,在市场调查中,算法可以分析消费者的购买行为和偏好,找出最接近目标消费者群体的样本,以便进行更精准的市场营销。
3、机器学习和人工智能:在机器学习和人工智能领域,该算法可以用于优化模型的参数,使得模型的预测结果最接近真实目标值。例如,在回归问题中,算法可以通过最小化预测值与实际目标值之间的差异来优化模型的参数。
4、金融风控:在信用评分中,计算用户的信用分数并找到最接近的等级,以决定贷款批准与否。
5、游戏设计:例如在角色扮演游戏(RPG)中,寻找最接近玩家当前能力的敌人以保持游戏挑战性。
6、物流优化:在路径规划中,寻找最接近目标地址的配送中心,可以减少运输时间和成本。
7、搜索引擎优化:搜索引擎尝试返回与用户查询最相关的结果。
8、医疗诊断:在疾病诊断中,医生可能要根据病人的症状找到最接近的病症。
9、图像处理:在图像分类或识别中,算法可能会寻找与给定图像类别最接近的训练样本。
10、自然语言处理(NLP):在语义理解中,寻找与输入句子意思最接近的已知短语或句子。
11、工程领域:在工程领域,该算法可以用于优化设计方案,使得设计方案的性能指标最接近目标值。例如,在机械设计中,算法可以通过调整设计参数,使得机械零件的强度、刚度等性能指标最接近设计要求。
总之,最接近目标的值算法在金融、推荐系统、机器学习和人工智能、工程以及数据分析等领域都有广泛的应用,可以帮助人们做出更准确、更明智的决策。
1、最接近目标的值:
1-1、Python:
- # 1.问题描述:
- # 给出一个数组,在数组中找到两个数,使得它们的和最接近但不超过目标值,返回它们的和.
- # 2.问题示例:
- # 输入target = 22,arr = [3, 5, 6, 8, 10, 11, 24],输出21,即10+11=21.
- # 3.代码实现:
- class Solution:
- # 参数arr: 输入列表
- # 参数target: 目标值
- # 返回值: 最接近目标值的两个数的和
- def find_closest_value(self, target, arr):
- if len(arr) < 2:
- return -1 # 如果数组长度小于2,则无法找到两个数的和,返回-1
- arr.sort() # 对数组进行排序
- # 在python中,float('inf')表示正无穷大;float('-inf')表示负无穷大.可以用于比较操作或作为数学运算中的一个边界值.
- closest_sum = float('inf') # 初始化最接近目标值的和为无穷大
- min_diff = float('inf') # 初始化最小差异为无穷大
- left = 0
- right = len(arr) - 1
- while left < right:
- current_sum = arr[left] + arr[right] # 当前左右指针所指数的和
- diff = abs(current_sum - target) # 计算当前和与目标值的差异
- if diff < min_diff: # 如果当前差异小于最小差异
- min_diff = diff # 更新最小差异
- closest_sum = current_sum # 更新最接近目标值的和
- if current_sum > target: # 如果当前和大于目标值,移动右指针
- right -= 1
- else: # 如果当前和小于或等于目标值,移动左指针
- left += 1
- if closest_sum == float('inf'): # 如果没有找到任何数对,返回-1
- return -1
- else: # 否则返回最接近目标值的和
- return closest_sum
- # 主函数
- if __name__ == '__main__':
- arr = [3, 5, 6, 8, 10, 11, 24]
- target = 22
- solution = Solution()
- print("输入数组:", arr, "目标值:", target)
- print("最接近目标的值为:", solution.find_closest_value(target, arr))
- # 4.运行结果:
- # 输入数组: [3, 5, 6, 8, 10, 11, 24] 目标值: 22
- # 最接近目标的值为: 21
1-2、VBA:
- Rem 自定义函数,功能:最接近目标的值
- Function find_closest_value(arr() As Variant, target As Double) As Double
- Dim i As Long, j As Long
- Dim currentSum As Double, closestSum As Double
- Dim diff As Double, closestDiff As Double
-
- ' 初始化closestSum为一个不可能的和(非常大的数)
- ' 和closestDiff为一个非常大的数,这样任何计算的和与差值都会小于它
- closestSum = -1 ' 初始化和,可以用一个不可能的值或者非常大的数,这里简单起见用-1
- closestDiff = 1E+99 ' 初始化差值为一个非常大的数
- ' 遍历数组中的每一对数字
- For i = LBound(arr) To UBound(arr)
- For j = i + 1 To UBound(arr)
- ' 计算当前和
- currentSum = arr(i) + arr(j)
- ' 检查当前和是否小于或等于目标值
- If currentSum <= target Then
- ' 计算当前和与目标值之间的差(绝对值)
- diff = target - currentSum
-
- ' 如果当前差小于最接近的差,则更新最接近的和与差
- If diff < closestDiff Then
- closestDiff = diff
- closestSum = currentSum
- End If
- End If
- Next j
- Next i
- ' 检查是否找到了合适的和(如果closestSum仍然是初始值,则表示没有找到)
- If closestSum = -1 Then
- ' 可以抛出一个错误或者返回一个特定的值来表示没有找到合适的和
- ' 这里为了简单起见,我们返回0,但在实际应用中应该有更合适的处理方式
- MsgBox "这样的数不存在!", vbCritical, "最接近目标的值"
- find_closest_value = 0
- Else
- ' 返回最接近但不超过目标值的和
- find_closest_value = closestSum
- End If
- End Function
- Rem 执行过程,功能:调用自定义函数find_closest_value,在立即窗口输出结果
- Sub TestRun()
- Dim arr() As Variant
- Dim target As Double, result As Double
-
- ' 定义一个包含数字的数组
- arr = Array(3, 5, 6, 8, 10, 11, 24)
- ' 设置目标值
- target = 22
- ' 调用函数并获取结果
- result = find_closest_value(arr, target)
- ' 打印结果(注意:这里不能直接打印整个数组,应该转换为字符串或使用循环打印每个元素)
- Debug.Print "输入的数组是:" & Join(arr, ", ") ' 使用Join函数将数组转换为以逗号分隔的字符串进行打印
- Debug.Print "最接近目标" & target & "的值是:" & result
- End Sub
-
- '结果输出:
- '输入的数组是:3, 5, 6, 8, 10, 11, 24
- '最接近目标22的值是:21
注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。
2、相关文章:
Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:



评论记录:
回复评论: