2015-04-16 5 views
0

Итак, я хочу создать случайное число от 0 до numberTextBox.text.Случайное число от 0 до текстового поля

Допустим, что текст текстового поля является 5, то я хочу, чтобы сгенерировать случайное число между 0 и 5.

я сейчас:

@IBAction func nextButton(sender: AnyObject) { 
let maxInteger = MacNumber.toInt()! 
let randomNumber = arc4random_uniform(UInt32(maxNumber)); 
let mxNumber = numberTextBox.text 

var textString = String(randomNumber) 
numberLabel.text = textString 
} 

Но когда я протестировать приложение и тип 5 в текстовом поле, numberLabel.text - это что-то вроде 192819371 .. Это очень высоко.

ответ

2

Здесь вы идете:

@IBAction func nextButton(sender: AnyObject) { 
     if numberTextbox.text == ""{ 
      return 
     } 
      var number:Int = 1 + numberTextbox.text.toInt()! 
      var randomNumber = random() % number 

     if randomNumber == 0{ 
      randomNumber = 1 
     } 

     var textString = String(randomNumber) 
      numberLabel.text = textString 
    } 

Я также добавил, что если текстовое поле пустое, оно просто возвращается, а если randomNumber 0 , он переходит к 1.

+0

OMG, спасибо, что это сработало! – user2783959

-1

Может быть, вы должны попробовать let randomNumber = random() % MaxNumber вместо let randomNumber = random(); MaxNumber?

+0

Не используйте random(), используйте arc4random или arc4random_uniform(). random() должен быть посеян и будет возвращать одну и ту же последовательность для одного и того же семени в каждом прогоне. – zaph

0

Не используйте случайные(), используйте arc4random() или arc4random_uniform(). random() необходимо высевать и вернуть одну и ту же последовательность для одного и того же семени после каждого посева.

let maxInteger = MaxNumber.toInt()! 
let randomNumber = arc4random_uniform(UInt32(maxNumber)); 

arc4random() не нужно быть посеяны и возвращает криптографические качества случайных чисел.
Используйте arc4random_uniform(), когда диапазон должен быть ограничен вместо модуля работать % для устранения погрешности по модулю.

См: ARC4RANDOM(3)

+0

Я получаю сообщение об ошибке: Не могу вызвать «arc4random_uniform» с списком аргументов типа «(String») – user2783959

+0

Поскольку numberTextBox.text - это строка, а не число, разобрать ее на целое число с 'toInt()' – riodoro1

+0

@ riodoro1 - Да , Я уже этого не делал и все еще получаю ошибку: не могу найти инициализатор для типа «UInt32», который принимает список аргументов fo type «(String)» – user2783959

0

Если вы хотите, чтобы сгенерировать случайное число в Swift, используйте функцию arc4random_uniform(). Следующий фрагмент кода генерирует число от 0 до 9:

var i = Int(arc4random_uniform(10)) 
Смежные вопросы