用你的卡西欧模拟原神抽卡!!!

废话不多说,程序走起! (这么好玩的程序,投个币吧)
注意:所有【 】中的均为所按按键
考虑到991cnx是高中生(竞赛狗)大学生研究生最常用的型号 也是普及率最高的,所以本教程使用卡西欧fx-991CN X作为示范
准备工作:
在教程开始之前,请先设置你的卡西欧: 1.设置输入/输出格式:线性输入/线性输出
【SHIFT】【设置】【1】【3】
2.设置小字体/多行显示:
【SHIFT】【设置】【↓】【↓】【4】【2】
3.其次,了解变量与变量赋值 调用变量(打出源码中的浅蓝色字母):
【ALPHA】【A】(或者其他字母)
变量赋值(打出→A): 当你打完一行代码的前面部分后,按
【STO】【A】(或者其他字母)
即可打出→A (或其他字母)
4.储存器数据清空:
【SHIFT】【9】【2】【=】【AC】
可使用
【SHIFT】【STO】
查看所有变量当前的数值
5.当运行多行命令时,显示器上方右数第二个图标亮起(像是竖起来的等号,见下图右上方),代表程序在运行的过程中,此时无法查看变量,无法退出程序,请继续按
【=】
直至该图标熄灭代表
循环结束
注意:
请务必从前往后输入代码,因为赋值只能赋在全部代码的末尾(即使你把光标移动到代码中间)
另外,每赋值一次,会自动运行已写完的程序,只需按
【=】
至循环结束,再按
【←】
即可回到程序编辑界面。
输入程序或运行程序时永远永远不要按
【↑】【↓】
键,永远不要!!!!(否则你需要重打一遍代码来治疗低血压doge)
程序源代码:
卡西欧fx-991 CN X 原神抽卡模拟器v4.1
Rnd(10^(9)+Abs(RanInt#(167-(Rnd(10^(9)+ Abs(1000÷(60×
A
+6)-0.5))-10^(9)),167)÷167-0.5))-10^(9)→
B
:
(Rnd(10^(9)+Abs((
C
+1)÷73-0.5))-10^(9)+
A
)× Abs(
B
-1)→
A
:
B
× RanInt#(1,2)×66666666:
Abs(
B
-1)×(
C
+1)→
C
注意:
1.所有变量均用浅蓝色字体标出,以免混淆 2.注意一共四行语句,前三行末尾有冒号,最后一行没有 3.核对括号数量 如果有问题,请在评论区询问,up看到后会进行解答(学生党,回复较慢,抱歉) 以上就是源代码,由于其复杂性,请务必核对源代码以
保证正确输入
运行方法:
代码编写完成后,按
【=】
即可运行
每按四次为一个周期,代表一次单抽
每个循环最后一个数字代表当前抽数
显示6666666代表出金且没歪
显示133333332代表出金且歪了
出金后上方第三行代表所用抽数
(如图为76抽歪了)
每次出金后继续按
【=】
系统会自动重置,所以可以实现连金
想要退出时,在循环结束后按
【←】
即可
另外,现在还没有大保底机制,预计在v5.0更新
卡西欧语言运行原理:
由于卡西欧没有if语句,没有for循环,所以想到使用取整来判定条件并输出0或1,但是卡西欧并没有取整函数,这里使用Rnd函数与绝对值结合的方式来解决 if语句标准形式:
Rnd(10^(9)+ Abs( x÷a-0.5))-10^(9)
这个语句代表将x与a比较大小,仅当0≤x≤a时输出0,其他情况下输出非零整数 原理很简单,就是初中竞赛的常见套路,对一个数字-0.5再四舍五入,等效于取整操作 这行程序有很大的局限性,比如需要使用到非零的输出时会很麻烦,而且只能做到数字比大小,还请大佬分享更加高端的方法 由于卡西欧只能从上往下依次运行命令,不能分支也不能跳过某行程序,所以我们可以把所有分支全部罗列出来,利用
Abs(B-1)×.........
B=0时执行后方操作,B=1时后方输出0 来选择需要执行的命令与需要跳过的命令 这也是抽卡程序中金自动重置所有参数的实现机制 另外,作者比较笨,没想到更好的思路,请各位大佬在评论区指教,谢谢!
写在最后:
编写这个卡西欧程序并且迭代到v4.1大概花费了在校一天半天的时间,起因是同学A(正在停课的物竞狗)分享了变量赋值的操作,同学B(退役的物竞狗)跟我(摆烂的物竞狗)聊着原神抽卡的机制,我立刻想到卡西欧貌似可以开发一下,去跟同学C(今年必进队的物竞狗)讨论了一下数学运算的方式,然后与同学A/B同时独立进行抽卡机制的开发。我们三个在周五晚自习几乎同时独立完成了代码的编写(并且思路比较接近)。 我个人的版本迭代: v1.0实现了概率函数的拟合与保底机制 v2.0实现出金后自动重置,连金具有可信度 v2.1加入歪与不歪的判定 v3.0优化代码结构 v4.0压缩语句数量至7句 v4.1压缩语句数量至4句 另外,同学B的代码也很优秀,只用了两行就完成了同等功能(牺牲了使用体验)摘录如下(已获得授权)
感谢三位同学的支持!!! 都看到这里了,不投个币嘛