swift - Randomizing through number range -
i'm trying part of app work user clicks button , label prints randomly generated number between 1-12. i've been able that, want not repeat random numbers have been printed.
what i've tried doing putting printed number array, , checking array each time generates new number.
i've gotten work in playground, cannot working real project.
here code project.
var usednumbers = [int]() var randomconv = 0 func randomize() { lblrandom.text = "\(arc4random_uniform(12) + 1)" randomconv = int(lblrandom.text!)! } @ibaction func btnrandompressed(sender: anyobject) { randomize() if usednumbers.contains(randomconv) { randomize() } else { usednumbers.append(randomconv) } if usednumbers.count == 12 { btnrandom.hidden = true } } and here code playground.
var lblrandom = "\(arc4random_uniform(12) + 1)" var randomconv = 0 var usednumbers = [int]() func randomize() { lblrandom = "\(arc4random_uniform(12) + 1)" randomconv = int(lblrandom)! } repeat { randomize() if usednumbers.contains(randomconv) { randomize() } else { usednumbers.append(randomconv) print(lblrandom) } } while usednumbers.count < 12
i´m not quite sure why code not working, try code instead works.
var usednumbers = [int]() var randomconv = 0 @ibaction func btnrandompressed(sender: anyobject) { randomconv = int(arc4random_uniform(12) + 1) if usednumbers.contains(randomconv) { // if find duplicate fire event again , new number randomized print("exists \(randomconv)") btn_pressed.sendactionsforcontrolevents(.touchupinside) } else { print(randomconv) lbltest.text = string(randomconv) usednumbers.append(randomconv) } } update
when usednumbers.contains(randomconv) condition true, can use row fire button event again: btn_pressed.sendactionsforcontrolevents(.touchupinside) - btn_pressed buttons outlet storyboard.
i have updated code block can see working example.
update 2, alternative solution
func randomize(){ repeat { if (usednumbers.count == 12){ return } randomconv = int(arc4random_uniform(12) + 1) } while usednumbers.contains(randomconv) usednumbers.append(randomconv) lbltest.text = string(randomconv) } @ibaction func btnrandompressed(sender: anyobject) { randomize() }
Comments
Post a Comment