首页 > 解决方案 > OpenOffice RAND() 函数 - 阻止它重新计算,直到被告知

问题描述

我正在制作一个简单加法示例的生成器,以帮助孩子学习算术。

我有两个生成随机整数的字段,作为加法的操作数。他们使用这个公式:

=INT(RAND()*(D2-B2)+B2)

其中 B2 和 D2 是操作数范围的最小值和最大值。

我还有一个空白字段,孩子将在其中输入他的答案。根据答案是否等于两个操作数之和,另一个字段显示 OK 或 NO:

=IF(C6=B4+D4;"OK";"NO")

其中 B4 和 D4 是操作数,C6 是孩子的答案。当然可以修改整个设置来教授减法、乘法或除法。

问题是,当输入答案时,OpenOffice Calc 会重新计算整个工作表并重新生成两个随机操作数,因此答案几乎总是错误的 - 因为显然它通常不等于新值的总和。

如何将输入答案的反应与随机操作数的再生区分开来?

理想情况下,我希望操作数仅在按下某种按钮时才重新生成,而不是在输入答案时重新生成。

标签: randomcontrolsopenoffice-calc

解决方案


我发现函数 RANDBETWEEN 可以满足我的要求。

由于它是一个“附加功能”,无论这实际上意味着什么,它不会在每次重新计算电子表格时生成一个新的随机数;仅当按下 Shift+Ctrl+F9 时才会这样做。F9 单独不会触发它,尽管它确实使其他功能重新计算。

正如它的名字所表明的,它也使得我在给定最小值和最大值之间拟合随机数的公式变得不必要

所以现在而不是

=INT(RAND()*(D2-B2)+B2)

我刚写

=INT(RANDBETWEEN(D2;B2))

并且工作已经完成,至少在 RANDBETWEEN 作为普通(而不是插件)函数被合并到 Calc 之前,这可能在将来的某个时候发生。在这种情况下,RAND.NV 可能会起作用。


推荐阅读