Excel怎样随机生成四则混合运算数学题?

您所在的位置:网站首页 pta算式自动判断 Excel怎样随机生成四则混合运算数学题?

Excel怎样随机生成四则混合运算数学题?

2023-03-14 15:57| 来源: 网络整理| 查看: 265

答案经过补充和修改,着急看最终结果的可以直接从“二、实现整除”开始看。

〇、内容索引

一、原始答案

随机生成四则运算

二、实现整除

计算式的结果固定为“一个乘除运算带一个加减运算”的形式,除法的运算结果都是能整除的。

三、拒绝负数

在实现整除的基础上,所有运算式的结果不出现负数。

四、降低难度

在结果不出现负数的基础上,乘除运算限制在“九九乘法表”范围内,最终结果加法不超过200,减法不超过100。

一、原始答案

随机生成运算符可以通过RANDBETWEEN和CHOOSE函数实现。

1-1、实现效果

(注意:每次结果会不一样。)

1-2、示例公式

=RANDBETWEEN(100,1000)&CHOOSE(RANDBETWEEN(1,4),"+","-","*","/")&RANDBETWEEN(100,1000)&"="

题主的原公式前后不变,中间连接部分使用CHOOSE函数在"+","-","*","/"四个运算符中随机抽取一个。

题主留言,想要生成“a+b-c”的混合四则运算算式,这个也是可以做到的。

1-3、重新拼接

把上面算式重新分解再拼接一下就可以了:

1-4、示例公式

=RANDBETWEEN(100,1000)&CHOOSE(RANDBETWEEN(1,4),"+","-","*","/")&RANDBETWEEN(100,1000)&CHOOSE(RANDBETWEEN(1,4),"+","-","*","/")&RANDBETWEEN(100,1000)&"="

1-5、公式简析

A部分:RANDBETWEEN(100,1000),目的:生成100-1000的整数;

B部分:CHOOSE(RANDBETWEEN(1,4),"+","-","*","/"),目的:随机抽取四则运算符。

C部分:=,目的:等号。

一开始的公式模式是:A&B&A&C,既“数字 符号 数字 =”

后面的公式模式是:A&B&A&B&A&C,既“数字 符号 数字 符号 数字=”

题主也可以根据需求,组合更长的四则运算算式,比如:

有问题请留言。

二、实现整除

题主提了新的需求,算式的结果需要为整数,既除法算式都可以被整除。

我这才知道题主是要给小学生出题。

回想起我小学时被大位数乘除法、尤其是除不尽的除法所支配的恐惧,我平衡了题目难度。

(我觉得等题主的孩子会看知乎了,应该给我补个赞。)

2-1、实现效果

修改内容:

①除法都是可以被整除的,避免了一堆除不尽的小数。

②题目难度调整为了“一个乘除运算带一个加减运算”的形式,取消了繁琐的纯乘除运算,也取消了过于简单的纯加减运算。

实际验证了100000条随机算式,“*带+”、“*带-”、“/带+”和“/带-”这四种类型计算式的数量大抵相等。

③把乘除法的元素范围限定为了11~99,既两个乘数、除数以及除法的运算结果都在这个范围内。

②和③一起,把算式的结果控制在了大约±10000的范围内,避免了连乘时高达8位的运算结果。

2-2、示例公式

=CHOOSE(RANDBETWEEN(1,2),RANDBETWEEN(100,1000)&CHOOSE(RANDBETWEEN(1,2),"+","-")&CHOOSE(RANDBETWEEN(1,2),RANDBETWEEN(11,99)&"*"&RANDBETWEEN(11,99),TEXTJOIN("",1,IF(((ROW($11:$99)=RANDBETWEEN(11,99))*(COLUMN($I:$CU)=RANDBETWEEN(11,99))),ROW($11:$99)*COLUMN($I:$CU)&"/"&ROW($11:$99),"")))&"=",CHOOSE(RANDBETWEEN(1,2),RANDBETWEEN(11,99)&"*"&RANDBETWEEN(11,99),TEXTJOIN("",1,IF(((ROW($11:$99)=RANDBETWEEN(11,99))*(COLUMN($I:$CU)=RANDBETWEEN(11,99))),ROW($11:$99)*COLUMN($I:$CU)&"/"&ROW($11:$99),"")))&CHOOSE(RANDBETWEEN(1,2),"+","-")&RANDBETWEEN(100,1000)&"=")

①数组公式,需要三键结束输入(CTRL+SHIFT+ENTER)。

②一个公式自动生成一个算式。

③使用前需要确认使用的EXCEL版本支持TEXTJION函数。

2-3、原理简析

公式太啰嗦就不分析了,简单说一下原理吧。

①选取两个11~99的整数,相乘得到的结果作为被除数、其中一个数作为除数,这样构造的除法是一定能被整除的。(此步用VBA比较好实现,使用公式就比较繁琐,这也是这个公式这么冗长的主要原因。)

②使用CHOOSE函数随机显示乘法公式或者除法公式,乘法公式就用最简单的随机数相乘公式,除法公式使用①构造的新公式。

③使用CHOOSE函数随机在②生成的乘除公式前面或后面生成加减公式。

2-4、批量求解

(随机生成的这么多算式,题主应该不想用计算器一一计算结果吧)

①求解公式

="="&LEFT(A2,LEN(A2)-1)

*其中A2为算式所在单元格。

②求解步骤

在算式右边输入公式(示例中为B列)→

将结果“选择性粘贴”为值→选中所有“求解”区域→打开“查找替换”功能→将“=”替换为“=”→

→效果达成。

2-5、特别说明

①“生成算式的公式”为数组公式,需要三键结束输入(CTRL+SHIFT+ENTER)。

②输入“生成算式的公式”后不要随意删减行和列,这样有可能影响公式正常运行。建议先调整好需要的格式再输入公式。

③如果题主使用的是WPS,批量求解也可以通过EVALUATE函数实现。

=EVALUATE(LEFT(A2,LEN(A2)-1))

有问题请留言。

祝孩子学习进步。

三、拒绝负数

评论区有人留言说想要“避免减法里面前面的数比后面的小”既,最终结果不能为负数,这个需求也可以实现。

(实际验证了100000条随机算式,“*带+”、“*带-”、“/带+”和“/带-”这四种类型计算式的数量大抵相等。公式结果最小值为0,没有负值。)

算式公式

=CHOOSE(RANDBETWEEN(1,8),RANDBETWEEN(11,99)&"*"&RANDBETWEEN(11,99)&"+"&RANDBETWEEN(100,1000),RANDBETWEEN(100,1000)&"+"&RANDBETWEEN(11,99)&"*"&RANDBETWEEN(11,99),CONCAT(IF(((ROW($11:$99)=RANDBETWEEN(11,99))*(COLUMN($K:$CU)=RANDBETWEEN(11,99))),ROW($11:$99)*COLUMN($K:$CU)&"/"&ROW($11:$99),""))&"+"&RANDBETWEEN(100,1000),RANDBETWEEN(100,1000)&"+"&CONCAT(IF(((ROW($11:$99)=RANDBETWEEN(11,99))*(COLUMN($K:$CU)=RANDBETWEEN(11,99))),ROW($11:$99)*COLUMN($K:$CU)&"/"&ROW($11:$99),"")),CONCAT(IF(((ROW($11:$99)=RANDBETWEEN(11,99))*(COLUMN($K:$CU)=RANDBETWEEN(11,99))),ROW($11:$99)&"*"&COLUMN($K:$CU)&"-"&RANDBETWEEN(1,ROW($11:$99)*COLUMN($K:$CU)),"")),CONCAT(IF(((ROW($11:$99)=RANDBETWEEN(11,99))*(COLUMN($K:$CU)=RANDBETWEEN(11,99))),RANDBETWEEN(ROW($11:$99)*COLUMN($K:$CU),9999)&"-"&ROW($11:$99)&"*"&COLUMN($K:$CU),"")),CONCAT(IF(((ROW($11:$99)=RANDBETWEEN(11,99))*(COLUMN($K:$CU)=RANDBETWEEN(11,99))),ROW($11:$99)*COLUMN($K:$CU)&"/"&ROW($11:$99)&"-"&RANDBETWEEN(10,COLUMN($K:$CU)),"")),CONCAT(IF(((ROW($11:$99)=RANDBETWEEN(11,99))*(COLUMN($K:$CU)=RANDBETWEEN(11,99))),RANDBETWEEN(COLUMN($K:$CU),9999)&"-"&ROW($11:$99)*COLUMN($K:$CU)&"/"&ROW($11:$99),"")))&"="

*数组公式,需要三键结束输入(CTRL+SHIFT+ENTER)。

*输入“生成算式的公式”后不要随意删减行和列,这样有可能影响公式正常运行。建议先调整好需要的格式再输入公式。

四、降低难度

有人留言说想要缩小计算范围,乘除法要控制在”九九乘法表“范围内,最终结果不超过200,最好不超过100,这个需求可以通过修改参数实现。

(实际验证了100000条随机算式,“*带+”、“*带-”、“/带+”和“/带-”这四种类型计算式的数量大抵相等。公式结果最小值为0,“/带+”计算式最大值为108,“*带+”计算式最大值为180,没有超过200,剩余计算式的最大值也没有超过100。)

示例公式

=CHOOSE(RANDBETWEEN(1,8),RANDBETWEEN(1,9)&"*"&RANDBETWEEN(1,9)&"+"&RANDBETWEEN(1,99),RANDBETWEEN(1,99)&"+"&RANDBETWEEN(1,9)&"*"&RANDBETWEEN(1,9),CONCAT(IF(((ROW($1:$9)=RANDBETWEEN(1,9))*(COLUMN($A:$J)=RANDBETWEEN(1,9))),ROW($1:$9)*COLUMN($A:$J)&"/"&ROW($1:$9),""))&"+"&RANDBETWEEN(1,99),RANDBETWEEN(1,99)&"+"&CONCAT(IF(((ROW($1:$9)=RANDBETWEEN(1,9))*(COLUMN($A:$J)=RANDBETWEEN(1,9))),ROW($1:$9)*COLUMN($A:$J)&"/"&ROW($1:$9),"")),CONCAT(IF(((ROW($1:$9)=RANDBETWEEN(1,9))*(COLUMN($A:$J)=RANDBETWEEN(1,9))),ROW($1:$9)&"*"&COLUMN($A:$J)&"-"&RANDBETWEEN(1,ROW($1:$9)*COLUMN($A:$J)),"")),CONCAT(IF(((ROW($1:$9)=RANDBETWEEN(1,9))*(COLUMN($A:$J)=RANDBETWEEN(1,9))),RANDBETWEEN(ROW($1:$9)*COLUMN($A:$J),99)&"-"&ROW($1:$9)&"*"&COLUMN($A:$J),"")),CONCAT(IF(((ROW($1:$9)=RANDBETWEEN(1,9))*(COLUMN($A:$J)=RANDBETWEEN(1,9))),ROW($1:$9)*COLUMN($A:$J)&"/"&ROW($1:$9)&"-"&RANDBETWEEN(1,COLUMN($A:$J)),"")),CONCAT(IF(((ROW($1:$9)=RANDBETWEEN(1,9))*(COLUMN($A:$J)=RANDBETWEEN(1,9))),RANDBETWEEN(COLUMN($A:$J),99)&"-"&ROW($1:$9)*COLUMN($A:$J)&"/"&ROW($1:$9),"")))&"="

*数组公式,需要三键结束输入(CTRL+SHIFT+ENTER)。

*输入“示例公式”后不要随意删减行和列,这样有可能影响公式正常运行。建议先调整好需要的格式再输入公式。

有问题请留言。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3