2015-11-30 1 views
0
func randomStringWithLength (len : Int) -> NSString { 

    let answer : NSString = ArrAnswer.objectAtIndex(0) as! NSString 
    let letters : NSString = answer 
    print(letters) 
    let randomString : NSMutableString = NSMutableString(capacity: len) 

    for (var i=0; i < len; i++){ 
     let length = UInt32 (letters.length) 
     let rand = arc4random_uniform(length) 
     randomString.appendFormat("%C", letters.characterAtIndex(Int(rand))) 

    } 

    return randomString 
} 

я уже попробовать это, Некоторые последние отсутствуют, чтобы преобразованная строка в каждый раз, или какое-то время Распечатайте последний дважды или трижды раз.Создать случайную строку по индексу массива

ответ

1

я не уверен, что именно вам нужно. если вам нужны рандомизированные символы в строке, вы можете использовать что-то вроде этого

import Foundation 
let str = "abcdef" 

// returns string with random order of characters 
func randomize(str: String)->String { 
    var chars = str.characters.map{ $0 } 
    let c = UInt32(chars.count) 
    if c < 2 { return str} 

    for i in 0..<(c - 1) { 
     let j = arc4random_uniform(c) 
     if i != j { 
      swap(&chars[Int(i)], &chars[Int(j)]) 
     } 
    } 
    return chars.reduce("", combine: { (str, c) -> String in 
     str + String(c) 
    }) 
} 
for i in 0...10 { 
    print(randomize(str)) 
} 
/* prints 

dcbeaf 
edcabf 
cebadf 
adcbef 
dacbef 
dceabf 
eacbdf 
adebcf 
adcbef 
bedcaf 
daebcf 

*/ 
1

Я думаю, что это лучший способ сделать это, если otherone не имеет другой способ, возможно, потребуется адаптировать этот код для necesities:

let array = ["Frodo", "sam", "wise", "gamgee"] 
let randomIndex = Int(arc4random_uniform(UInt32(array.count))) 
print(array[randomIndex]) 
+0

Я хочу преобразовать индекс строки как «Frodo», я не получаю случайный индекс. – Rock