我想要隨機化字母表中所有字符的字符串。現在,我創建了26個字符的可變數組,使用exchangeObjectAtIndex:方法對它們進行混洗,然後將每個字符添加到我返回的字符串中。生成隨機字母串的有效方法?
必須有更好的方法來做到這一點。這裏是我的代碼:
- (NSString *)shuffledAlphabet {
NSMutableArray * shuffledAlphabet = [NSMutableArray arrayWithArray:@[@"A",@"B",@"C",@"D",@"E",@"F",@"G",@"H",@"I",@"J",@"K",@"L",@"M",@"N",@"O",@"P",@"Q",@"R",@"S",@"T",@"U",@"V",@"W",@"X",@"Y",@"Z"]];
for (NSUInteger i = 0; i < [shuffledAlphabet count]; ++i) {
// Select a random element between i and end of array to swap with.
int nElements = [shuffledAlphabet count] - i;
int n = (random() % nElements) + i;
[shuffledAlphabet exchangeObjectAtIndex:i withObjectAtIndex:n];
}
NSString *string = [[NSString alloc] init];
for (NSString *letter in shuffledAlphabet) {
string = [NSString stringWithFormat:@"%@%@",string,letter];
}
return string;
}
你想要一個隨機的字母串,還是要隨機排列字母表中的字母(即「沒有重複的隨機序列」)? - 你的問題的標題是第一個,而你的代碼是後者。 –
我很高興重複字母或簡單的洗牌字母表。當我寫出這種方法時,首先想到的是洗牌字母表。 – Joshua
來吧,決定你想要什麼。其中兩個真的不同。 – erkanyildiz