Ethan Marcus
Ethan Marcus

Reputation: 3

Min and Max Functions Not Working Swift

I'm making a game and I've been trying to produce random movement. This is my code.

let actualDuration = NSTimeInterval(random(min(): CGFloat(3.0), max: CGFloat(4.0)))

The min and max aren't working please help.

Upvotes: 0

Views: 342

Answers (2)

Saood
Saood

Reputation: 283

@Ethan Marcus

try like this

let minValue = 3
let maxValue = 4
    let actualDuration = NSTimeInterval(minValue + (random() % (maxValue - minValue)))

Upvotes: 0

Sweeper
Sweeper

Reputation: 272665

Unlike the .NET Framework or the JDK, there isn't a function that takes min and max parameters to generate a random number. :(

If you want to generate a random number between 3 and 4, you should use the arc4random_uniform function to generate a number between 0 and 999 first and then divide that number by 1000 and plus 3:

let randomNumber = Double(arc4random_uniform(1000))
let actualDuration = CGFloat(randomNumber / 1000 + 3)

Let me explain how this works.

randomNumber is between 0 and 999 right? Now when you divide it by 1000, it becomes a number less than 1. i.e. 0 ~ 0.999. And you add this number to 3, the result becomes a random number between 3 and 4, which is what you wanted.

If you want a more precise double, you can generate a number between 0 and 9999 and divide it by 10000. You know what I mean!

Upvotes: 3

Related Questions