想使用swift生成随机数学函数吗?

时间:2018-08-02 12:59:51

标签: ios swift arkit

我正在为年龄较小的孩子第一次学习数学制作ARKit游戏(使用Swift 4)。我需要设置一组函数来生成随机的简单数学问题。我知道如何完成数字生成,但是尝试也生成数学运算符(+,-,%,*)却是一个挑战。

我最初考虑使用一个数组,将每个运算符作为字符串调用,但我需要将值传递到实际问题中,以便知道正确的答案。

它所要做的就是生成一个案例,在该案例中,我可以将两个变量放入一个问题中。

var num1 = 0
var num2 = 0


qLabel.text = "\(question)"

num1 = Int.random(in: 0.. < 10)
num2 = Int.random(in: 0.. < 10)

if (operator is a +) {

   question = "\(num1) + \(num2)"
   answer = (num1 + num2)

}

有人可以帮我找到解决方法吗?

2 个答案:

答案 0 :(得分:0)

没有“魔术子弹”。为了向用户展示,您需要从运算符列表中随机选择字符串,例如["+", "-"],通过在列表中生成随机索引。对于实际计算,您将必须测试它是哪个字符串并写出相应的计算。

答案 1 :(得分:0)

一种方法是为每个运算符分配一个数字:

let operator = Int.random(in: 0..<4)
let number1 = Int.random(in: 0..<10)
let number2 = Int.random(in: 0..<10)
switch operator {
    case 0: question = "\(number1) + \(number2)"
    case 1: question = "\(number1) - \(number2)"
    case 2: question = "\(number1) / \(number2)"
    case 3: question = "\(number1) * \(number2)"
}

看到这是为小孩准备的,当您提出问题时,您可能会变得聪明一点。使用上述类似的简单方法可能会导致出现“ 5/3”之类的问题,这可能会使一些不知道十进制数字的孩子感到困惑。因此,您可能应该将将每种类型的问题生成自己的case的逻辑。

对于减法问题,您可以先检查哪个更大。然后适当地排列它们,以免结果为负数。

对于除法问题,您可以生成两个数字,并使用两个数字的乘积除以一个数字来产生一个问题。这样,您可以保证整数解。像这样:

let number1 = Int.random(in: 0..<10)
let number2 = Int.random(in: 0..<10)
let product = number1 * number2
question = "\(product) / \(number1)"