用Excel写个摸球模拟器玩玩

用Excel写个摸球模拟器玩玩

*
背景
代码实现
相关资料

背景

最近对象有个需求,想要帮忙写个程序, 实现功能模拟两种颜色的球,随机摸球N次后,摸到不同颜色的次数。

考虑到非程序员的环境配置问题,直接用Excel中的宏开发模式,把许久前学过的VB语言捡起来,简单实现了下,效果如下:

用Excel写个摸球模拟器玩玩

; 代码实现

实现思路

  • 界面区:
  • 设置两种颜色球的个数
  • 设置1000、10000、100000次模拟循环按钮
  • 单元格实时刷新摸球模拟结果,并可视化为进度条
  • 代码区:
  • 编写ms级延时函数delay()
  • 编写核心处理函数main_process(),模拟摸球过程
    • 随机函数生成0-1区间的数
    • 根据几何概型将不同类型球的个数转换为概率
    • 统计随机函数生成结果在不同区间的次数,并延时显示到单元格上
  • 不同按钮设置循环次数传递给main_process()
  • 归零按钮实现单元格数据清零

VB代码

Private Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long

Sub delay(T As Long)
    Dim time1 As Long
    time1 = timeGetTime
    Do
        DoEvents
    Loop While timeGetTime - time1 < T
End Sub

Sub main_process(loop_times As Long)
    red = 4
    yellow = 3
    ratio_red = red / (red + yellow)
    normalised_val = 0

    Range("b5").Value = 0
    Range("b6").Value = 0

    delay_t = 0
    If looptimes = 1000 Then
      delay_t = 2
    End If

    If loop_times = 10000 Then
      delay_t = 1
    Else
      delay_t = 0
    End If

    For i = 1 To loop_times

        If loop_times <> 100000 Then
            delay (delay_t)
        End If

        normalised_val = Rnd()
        If normalised_val < ratio_red Then
            Range("b5").Value = Range("b5").Value + 1
        Else
            Range("b6").Value = Range("b6").Value + 1
        End If
    Next i

End Sub

Sub 按钮1_Click()
    loop_times = 1000
    main_process (loop_times)
End Sub

Sub 按钮2_Click()
    loop_times = 10000
    main_process (loop_times)
End Sub

Sub 按钮3_Click()
    loop_times = 100000
    main_process (loop_times)
End Sub

Sub 按钮4_Click()
    Range("b5").Value = 0
    Range("b6").Value = 0
End Sub

如果有兴趣需要现成的excel文件可以评论留言,有需求再放上来,当然还是鼓励自己去尝试下。

相关资料

  1. VBA延时的三个方法,link
  2. VBA常用函数参考,link

Original: https://blog.csdn.net/qq_17256689/article/details/128323435
Author: 来知晓
Title: 用Excel写个摸球模拟器玩玩

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/723583/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 学术报告: 机器学习的常用招数

    摘要: 传统计算机程序将人类的知识直接教给机器, 通常可以解决一些确定性的问题; 机器学习则模拟人类的学习方式, 从数据中总结出规律, 常用于解决现实中更为广泛存在的不确定性问题….

    人工智能 2023年5月31日
    069
  • DataFrame

    `python;gutter:true;Init signature: pd.DataFrame(data=None, index=None, columns=None, dtyp…

    人工智能 2023年6月2日
    068
  • 大数据探索

    数据挖掘 区间型数据(Interval) 数值型数据的取值都是数值型,其大小代表了对象的状态,比如,年收入的取值,其大小代表了其收入状态。 分类型数据(Categorical) 分…

    人工智能 2023年7月16日
    053
  • 机器学习中的七种分类算法

    目录 1 分类任务的类型 1.1 二元分类 1.2 多元分类 1.3 多标签分类 1.4 不平衡分类 2 分类算法如何工作 3 数据预处理 4 创建测试集和训练集 5 选择模型 6…

    人工智能 2023年7月3日
    066
  • 经验分享丨我是如何零经验转行数据分析的?

    感觉这两年势头不好的行业越来越多的,起初是教育行业大崩盘,在之后房地产和汽车等行业也在逐渐走向低谷,市场上”灵活就业”的朋友越来越多了,很多人都不禁开始思考…

    人工智能 2023年7月17日
    041
  • 【DeeplabV3+】DeeplabV3+网络结构详解

    文章目录 1 常规卷积与空洞卷积的对比 * 1.1 空洞卷积简介 1.2 空洞卷积的优点 2 DeeplabV3+模型简介 3 DeeplabV3+网络代码 4 mobilenet…

    人工智能 2023年6月16日
    0120
  • CMUSphinx免费离线语音识别开源库教程iOS开发

    CMUSphinx开源语音识别工具包,可以基于CMUSphinx开发iOS版本的语音识别和语音合成库。 本文介绍的语音识别库使您可以轻松快速地将多种语言的离线语音识别和合成语音添加…

    人工智能 2023年5月25日
    095
  • Python 时间序列数据平滑去噪 Savitzky-Golay滤波器

    ; 一、引言 一般来说,对时间序列曲线做平滑好处多多,能使得原始时间序列更具备可预测性: 减少噪声对时间序列的影响; 获得除去噪声后的时间序列数据;时间序列平滑后的数据可以用来解释…

    人工智能 2023年7月5日
    046
  • 关于修Bug的一些想法

    0. 前言 八月份快要结束了,这个月也没有啥输出,今天下班较早,赶一篇学了一年多C++后的一些思考,关于修Bug的一些想法和思路。平时工作中,如果写代码花费一天时间,那调试解决Bu…

    人工智能 2023年6月4日
    097
  • 论文解读:SpellBERT:A Lightweight Pretrained Model for Chinese Spelling Checking

    论文解读:SpellBERT:A Lightweight Pretrained Model for Chinese Spelling Checking 简要信息: 序号属性值1模型…

    人工智能 2023年5月27日
    069
  • 【Python】可视化台风路径轨迹图

    台风天要带多少钱出门? 答案是:四千万。因为台风天没四(事)千万不要出门 这不最近又到了台风频发的季节。作为没有四千万的沿海人,多关注一下天气预报还是有必要的。 那么今天呢,就给大…

    人工智能 2023年7月15日
    074
  • 疫情微博内容情感分析

    一.前言 最近,碰到一个疫情微博情感分类的任务看到挺有意思的,就试了试手,顺便记录了下整个实验的全过程,话不多说,请看下文。 二.数据集简介与预处理 2.1 数据集简介 数据集为疫…

    人工智能 2023年5月31日
    084
  • YOLOv5基础知识点——激活函数

    什么是激活函数? ​​​​​​​什么是激活函数&该选哪种激活函数?_哔哩哔哩_bilibili 深度学习笔记:如何理解激活函数?(附常用激活函数) – 知乎 (…

    人工智能 2023年6月25日
    069
  • 《Python 黑科技》一键分析评论关键词,制作精美词云

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。 Original: https:…

    人工智能 2023年7月6日
    053
  • Informer模型与基础学习

    文章目录 摘要 文献阅读 一. Informer: 一个基于Transformer改进的高效的长时间序列预测模型 * 1.1 论文摘要 1.2 研究内容 1.3 Informer模…

    人工智能 2023年7月26日
    065
  • 偏最小二乘(PLS)原理分析&Python实现

    目录 1 偏最小二乘的意义​​​​​​​ 2​ ​​​​​​PLS实现步骤 3 弄懂PLS要回答的问题 4 PLS的原理分析 4.1 自变量和因变量的主成分求解原理 4.1.1 确…

    人工智能 2023年7月30日
    0132
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球