如何使函数选择随机路径?

时间:2015-12-07 17:09:48

标签: swift

所以我要做的就是调用一个函数,该函数只运行4个可能函数中的1个函数,因此它会随机决定要执行哪个函数。

在这种情况下,我试图随机选择的4个函数是moveUp()moveDown()moveRight()和moveLeft()。

这就是我现在所拥有的,并没有真正发挥作用。我没有找到任何帮助。

func moveComputerPlayer() {

//This is where I have no idea what to do.
"randomly choose to run: moveRight(), moveLeft(), moveUp(), moveDown()


}

感谢。

3 个答案:

答案 0 :(得分:3)

  1. 创建一系列可能的函数/方法。
  2. 选择一个随机元素。
  3. 调用所选功能。
  4. 请记住,函数是Swift中的类型。

    func moveUp() {}
    func moveDown() {}
    func moveLeft() {}
    func moveRight() {}
    
    func moveComputerPlayer() {
        let moves = [
            moveUp,
            moveDown,
            moveLeft,
            moveRight,
        ]
    
        let randomIndex = Int(arc4random_uniform(UInt32(moves.count)))
        let selectedMove = moves[randomIndex]
        selectedMove()
    }
    

答案 1 :(得分:1)

使用arc4random()arc4random_uniform()生成随机数。使用例如切换case语句以将号码与其中一个函数相关联。

在你的情况下:

func moveComputerPlayer() {
let rd = Int(arc4random_uniform(4) + 1)
switch rd {
case 1:
    moveRight()
case 2:
    moveLeft()
case 3:
    moveUp()
case 4:
    moveDown()
default:
   print(rd)
}

}

答案 2 :(得分:1)

看看这里:

https://stackoverflow.com/a/24098445/4906484

然后:

  let diceRoll = Int(arc4random_uniform(4) + 1)

switch (diceRoll) {
    case 1: 
        moveRight()
    case 2:
        moveLeft()
    case 3:
        moveUp()
    case 4:
        moveDown()
    default: 
        print("Something was wrong:" + diceRoll)
}