首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Python-VBA编程500例-011(入门级)

  • 25-03-03 04:43
  • 2766
  • 13808
blog.csdn.net

目录

1、最接近目标的值:

1-1、Python:

1-2、VBA:

2、相关文章:

Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502

个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的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. # 1.问题描述:
  2. # 给出一个数组,在数组中找到两个数,使得它们的和最接近但不超过目标值,返回它们的和.
  3. # 2.问题示例:
  4. # 输入target = 22,arr = [3, 5, 6, 8, 10, 11, 24],输出21,即10+11=21.
  5. # 3.代码实现:
  6. class Solution:
  7. # 参数arr: 输入列表
  8. # 参数target: 目标值
  9. # 返回值: 最接近目标值的两个数的和
  10. def find_closest_value(self, target, arr):
  11. if len(arr) < 2:
  12. return -1 # 如果数组长度小于2,则无法找到两个数的和,返回-1
  13. arr.sort() # 对数组进行排序
  14. # 在python中,float('inf')表示正无穷大;float('-inf')表示负无穷大.可以用于比较操作或作为数学运算中的一个边界值.
  15. closest_sum = float('inf') # 初始化最接近目标值的和为无穷大
  16. min_diff = float('inf') # 初始化最小差异为无穷大
  17. left = 0
  18. right = len(arr) - 1
  19. while left < right:
  20. current_sum = arr[left] + arr[right] # 当前左右指针所指数的和
  21. diff = abs(current_sum - target) # 计算当前和与目标值的差异
  22. if diff < min_diff: # 如果当前差异小于最小差异
  23. min_diff = diff # 更新最小差异
  24. closest_sum = current_sum # 更新最接近目标值的和
  25. if current_sum > target: # 如果当前和大于目标值,移动右指针
  26. right -= 1
  27. else: # 如果当前和小于或等于目标值,移动左指针
  28. left += 1
  29. if closest_sum == float('inf'): # 如果没有找到任何数对,返回-1
  30. return -1
  31. else: # 否则返回最接近目标值的和
  32. return closest_sum
  33. # 主函数
  34. if __name__ == '__main__':
  35. arr = [3, 5, 6, 8, 10, 11, 24]
  36. target = 22
  37. solution = Solution()
  38. print("输入数组:", arr, "目标值:", target)
  39. print("最接近目标的值为:", solution.find_closest_value(target, arr))
  40. # 4.运行结果:
  41. # 输入数组: [3, 5, 6, 8, 10, 11, 24] 目标值: 22
  42. # 最接近目标的值为: 21
1-2、VBA:
  1. Rem 自定义函数,功能:最接近目标的值
  2. Function find_closest_value(arr() As Variant, target As Double) As Double
  3. Dim i As Long, j As Long
  4. Dim currentSum As Double, closestSum As Double
  5. Dim diff As Double, closestDiff As Double
  6. ' 初始化closestSum为一个不可能的和(非常大的数)
  7. ' 和closestDiff为一个非常大的数,这样任何计算的和与差值都会小于它
  8. closestSum = -1 ' 初始化和,可以用一个不可能的值或者非常大的数,这里简单起见用-1
  9. closestDiff = 1E+99 ' 初始化差值为一个非常大的数
  10. ' 遍历数组中的每一对数字
  11. For i = LBound(arr) To UBound(arr)
  12. For j = i + 1 To UBound(arr)
  13. ' 计算当前和
  14. currentSum = arr(i) + arr(j)
  15. ' 检查当前和是否小于或等于目标值
  16. If currentSum <= target Then
  17. ' 计算当前和与目标值之间的差(绝对值)
  18. diff = target - currentSum
  19. ' 如果当前差小于最接近的差,则更新最接近的和与差
  20. If diff < closestDiff Then
  21. closestDiff = diff
  22. closestSum = currentSum
  23. End If
  24. End If
  25. Next j
  26. Next i
  27. ' 检查是否找到了合适的和(如果closestSum仍然是初始值,则表示没有找到)
  28. If closestSum = -1 Then
  29. ' 可以抛出一个错误或者返回一个特定的值来表示没有找到合适的和
  30. ' 这里为了简单起见,我们返回0,但在实际应用中应该有更合适的处理方式
  31. MsgBox "这样的数不存在!", vbCritical, "最接近目标的值"
  32. find_closest_value = 0
  33. Else
  34. ' 返回最接近但不超过目标值的和
  35. find_closest_value = closestSum
  36. End If
  37. End Function
  38. Rem 执行过程,功能:调用自定义函数find_closest_value,在立即窗口输出结果
  39. Sub TestRun()
  40. Dim arr() As Variant
  41. Dim target As Double, result As Double
  42. ' 定义一个包含数字的数组
  43. arr = Array(3, 5, 6, 8, 10, 11, 24)
  44. ' 设置目标值
  45. target = 22
  46. ' 调用函数并获取结果
  47. result = find_closest_value(arr, target)
  48. ' 打印结果(注意:这里不能直接打印整个数组,应该转换为字符串或使用循环打印每个元素)
  49. Debug.Print "输入的数组是:" & Join(arr, ", ") ' 使用Join函数将数组转换为以逗号分隔的字符串进行打印
  50. Debug.Print "最接近目标" & target & "的值是:" & result
  51. End Sub
  52. '结果输出:
  53. '输入的数组是:3, 5, 6, 8, 10, 11, 24
  54. '最接近目标22的值是:21

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。

2、相关文章:

2-1、Python-VBA编程500例-009(入门级)

2-2、Python-VBA编程500例-010(入门级)

2-3、Python-VBA编程500例-012(入门级)

2-4、Python-VBA编程500例-013(入门级)

Python算法之旅:http://iyenn.com/rec/1699032.html?spm=1001.2014.3001.5502
个人主页:非风V非雨-CSDN博客

欢迎志同道合者一起交流学习,我的QQ:94509325/微信: 

文章知识点与官方知识档案匹配,可进一步学习相关知识
算法技能树首页概览60120 人正在系统学习中
遨游码海,我心飞扬
微信名片
注:本文转载自blog.csdn.net的神奇夜光杯的文章"https://myelsa1024.blog.csdn.net/article/details/136828692"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top