Aleatorizar la duración del movimiento del nodo

Estoy haciendo un juego en SpriteKit y tengo un nodo que se mueve hacia adelante y hacia atrás por la pantalla y se repite usando el código:

    let moveRight = SKAction.moveByX(frame.size.width/2.8, y: 0, duration: 1.5)
    let moveLeft = SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: 1.5)
    let texRight = SKAction.setTexture(SKTexture(imageNamed: "Drake2"))
    let texLeft = SKAction.setTexture(SKTexture(imageNamed: "Drake1"))
    let moveBackAndForth = SKAction.repeatActionForever(SKAction.sequence([texRight, moveRight, texLeft, moveLeft,]))
    Drake1.runAction(moveBackAndForth)

Estoy tratando de averiguar qué método puedo usar para aleatorizar la duración. Cada vez que se ejecuta moveBackandForth, quiero que vuelva a ejecutarse con una duración diferente (dentro de los juegos, no entre ellos). Si alguien pudiera darme un código de ejemplo para probar, realmente lo agradecería.

También arc4Random funciona bien, pero no se aleatoriza dentro del juego, solo entre juegos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta