2016-03-08 3 views
0

Я делаю игру, и я пытаюсь создать случайное движение. Это мой код.Минимальные и максимальные функции не работают Swift

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

Минимум и макс не работают, пожалуйста, помогите.

+1

Должен ли он быть 'мин:' вместо 'мин():'? –

+0

Можете ли вы опубликовать свое определение случайных методов? –

ответ

3

В отличие от .NET Framework или JDK нет функции, которая принимает параметры min и max для генерации случайного числа. :(

Если вы хотите, чтобы сгенерировать случайное число в диапазоне от 3 до 4, вы должны использовать функцию arc4random_uniform генерировать число между 0 и 999, а затем разделить это число на 1000 и плюс 3:

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

Позвольте мне объяснить, как это работает.

randomNumber находится между 0 и 999 правильно? Теперь, когда вы разделите его на 1000, это становится число меньше 1. т.е. 0 ~ 0,999. и вы добавите этот номер 3, результат становится случайным числом от 3 до 4, что вам и нужно.

Если вам нужен более точный двойной, вы можете сгенерировать число от 0 до 9999 и разделить его на 10000. Вы знаете, что я имею в виду!

+0

Большое вам спасибо, и обе версии работают, если вы делаете 3 и 4 CGFLOAT на сообщение Saoods –

0

@Ethan Маркус

попробовать, как этот

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

Я не думаю, что ваш код может генерировать случайное число от 3 до 4 – Sweeper

Смежные вопросы