龙空技术网

你见过这样抛硬币吗?仿真、自动、统计——GeoGebra教程

啊K数学 304

前言:

此刻朋友们对“c语言坐标系涂色”都比较看重,大家都想要学习一些“c语言坐标系涂色”的相关内容。那么小编也在网上搜集了一些对于“c语言坐标系涂色””的相关文章,希望兄弟们能喜欢,各位老铁们一起来学习一下吧!

转盘、掷骰子、抛硬币在小学、初中、高中的数学教材中,都多次出现。前两者,我们已用GeoGebra进行了模拟。而抛硬币自然也可以用GeoGebra来模拟!

来看下效果:

点击“抛硬币”按钮,即可模拟抛硬币一次,并显示和统计抛掷的结果,还可以标注出对应的点。

而点击“自动抛50次”按钮,即模拟抛掷50次硬币。

如果想要显示得好看些,也可以在模拟完数次硬币的抛掷后,点击“复位”按钮,再点击“自动抛50次”按钮:

源文件获取方式,请见文末

还可以继续点击“自动抛50次”按钮,观察频率的变化情况:

为压缩图片,已删除部分帧

那么,这个作品是如何制作的呢?

先来看制作思路:

如何模拟出硬币?硬币面——可用圆周(Circle)指令;硬币的正面“1”——竖直部分可用多边形(Ploygon)指令,弯曲部分可用圆弧(CircularArc)指令。硬币的反面“花”——若用玫瑰线来表示,知其参数方程,即可用曲线(Curve)指令。如何模拟抛硬币的效果?所谓“抛”,可拆解为两部分:翻转效果——旋转(Rotate)指令;向上或向下移动的效果——平移(Translate)指令。如何显示抛硬币的结果?假设未旋转前,正面向上。抛硬币的结果,取决于硬币旋转的度数。若旋转度数为360°的倍数——如果(If)、余式(Mod)指令。如何统计抛硬币的结果?将所有结果放于一列表中,再用条件计数(CountIf)指令。显示则用表格文本(TableText)指令。

那么,下面就开始具体的制作!

模拟硬币

用玫瑰线来表示硬币面上的“花”,其参数方程如下:

x=a* sin(nt)* cos(t), y=a*sin(nt)* sin(t)

再套进曲线指令:

曲线( <x(t)>, <y(t)>, <参变量t>, <t-起始值>, <t-终止值> )

于是,硬币基本可以模拟出来:

注:扁平列表(Flatten)、描点(Point)。

效果如下:

这里,对q2稍作解释:

q2是对“1”的弯曲部分的涂色,即多边形法涂色。而多边形q2的各顶点为:在圆弧A1B1上依次选取的101个点、在圆弧B2A2上依次选取的101个点。模拟抛硬币

sgn是符号函数。当x为正时,sgn(x)为1;当x为负时,sgn(x)为-1;当x为零时,sgn(x)为0。

先来看需要引进什么量。以抛硬币面c为例:

平移(旋转(c, sgn(b) 720° k' + b k, y轴), u)

也就是将“抛”这个动作拆解为多个部分:

硬币随机旋转半圈或一圈——度数b;且需要旋转的过程——引进滑动条k。硬币需有旋转多圈的效果——加多2圈(即±720°,正负取决于b的正负,以便同逆时针或顺时针方向旋转);要有旋转速度加快的效果——引进滑动条k'。硬币向上、再向下平移——引进向量u。

而引进这些量,考虑到具体的效果呈现,还需考虑这些量的设置:

注:随机元素(RandomElement)、去除(Remove)、序列(Sequence)、滑动条(Slider)、向量(Vector)、y 轴(yAxis)、更新作图(UpdateConstruction)、 赋值(SetValue)、 启动动画(StartAnimation)。

目前效果如下:

在此基础上,如何做到自动抛掷50次——引进滑动条m,让m运动1次,就抛掷1次!

而为了知晓一共抛掷几次——引进n来记录:

注:运行单击脚本(RunClickScript)。

效果如下:

为了压缩图片,删除了自动抛50次的部分帧

按钮boutton1请自行隐藏。

显示结果

因为未抛掷完,我们就知道抛掷结果text0。而抛掷完(即h等于10时),抛掷次数才加一。

于是,在h的更新时脚本写上:

如果(h==10,赋值(l2,追加(l2,text0)))

注:追加(Append)。

于是,显示结果:

注:公式文本(FormulaText)。

统计结果

如果不考虑美观,可直接用条件计数计算列表l2中“正面”出现的次数。

而为了视觉效果更佳,所需步骤则略多:

注:商式(Div)、执行(Execute)、提取(Take)。

上面这么多步,使得当抛掷次数n超过50的倍数时,会自动产生多一列:

最多到500次,即显示10列。如需显示更多列,只需修改两个执行指令中的“10”。

最后,再做出坐标系,并标示出相应的点:

注:线段(Segment)、文本(Text)。

由于需要建立的坐标系比例与现有的1:1不同,需留意对应关系。这里,主要是让横轴1对应50,而纵轴的4对应1:

结语

如果难以理解一些指令或设置,可以稍作修改,再看与原先的效果有什么区别。

如需源文件,请点赞,并回复:抛硬币。

标签: #c语言坐标系涂色 #称硬币的算法c