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

Popular posts from this blog

how to insert data php javascript mysql with multiple array session 2 -

multithreading - Exception in Application constructor -

windows - CertCreateCertificateContext returns CRYPT_E_ASN1_BADTAG / 8009310b -