生成随机字符串的代码会创建相同的相同字符串序列

mjd*_*dth 2 iphone random objective-c

我有以下方法应该创建一个20个字符的ID(有时带有前缀)并返回ID.

它似乎在发布时重置,每次我使用它都会创建相同数量的相同序列.

+(NSString *)createUniqueIdentifier:(NSString *)withPrefix {
    NSString *outstring = nil;

    if (withPrefix!=nil && ![withPrefix isEqualToString:@""]) {
        outstring = [withPrefix stringByAppendingString:@"-"];
    } else {
        outstring = @"";
    }
    NSInteger ii;
    NSString *allletters = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    for (ii=0; ii<20; ii++) {
        outstring = [outstring stringByAppendingString:[allletters substringWithRange:[allletters rangeOfComposedCharacterSequenceAtIndex:random()%[allletters length]]]];
    }

    return outstring;

}
Run Code Online (Sandbox Code Playgroud)

我假设这与此有关random(),但我不知道还有什么用.我想我甚至从Stack Overflow那里得到了这个建议.

谢谢你的帮助!

epa*_*tel 7

使用时random(),应在程序启动时设置种子值,即srandom(time(NULL));