2016-03-26 5 views
0

Ich schrieb eine Funktion, die den größten Unterschied zwischen allen Elementen des Arrays findet. Aber ich brauche die Einschränkung für das Array der Eingabeelemente [-5..20]. Leider unterstützt es UInt32 nicht. Was ähnelt einer Lösung, um das Array zufällig aus dem Bereich [-5..20] zu füllen? Danke![Swift 2.2]: analoger arc4random für Bereich mit negativen Zahlen

func highDifferenceV (n: Int) ->String{ 
     var a = [Int]() //array 
     var dif = 0  // max difference 
     var k = 0 


     for _ in 0..<n { 
      a.append(Int(arc4random_uniform(UInt32(20)))) // fill array 


     } 
     while k < a.count { //search the greatest difference 
      for i in 0..<n { 
       if a[k] - a[i] > dif { 
        dif = a[k] - a[i] 
       } 
      } 
      k++ 
     } 
     print(a) 
     return "Maximum difference =\(dif)" 
    } 

    highDifferenceV(75) 

Antwort

3

Um ein Array mit Werten von -5...20, erzeugt eine Zahl im Bereich 0...25 und dann subtrahieren 5 zu füllen:

for _ in 0..<n { 
    a.append(Int(arc4random_uniform(UInt32(26)))-5) // fill array 
} 

Im Allgemeinen ist einen Wert im Bereich min...max, arc4random_uniform mit Call zu erzeugen max - min + 1 und fügen Sie dann min hinzu.

+0

Genau! Vielen Dank! – redisky

+0

@redisky http://stackoverflow.com/a/34712601/2303865 –