gpt4 book ai didi

objective-c - 将随机生成的 NSString 添加到 NSMutableArray 的算法

转载 作者:行者123 更新时间:2023-12-03 17:37:13 25 4
gpt4 key购买 nike

目标是生成一个长度为 NSString 的字符并将每个字符串分配给一个数组。我陷入了困境,我需要用我的算法做什么才能得到正确的结果。这是示例。我得到的结果是相同的随机生成的字符串添加到我的数组 26 次,而不是添加 26 个不同的字符串。

我考虑过声明 26 个不同的 NSString 并将算法的每个结果分配给每个字符串,但这似乎效率低下。感谢您的帮助。

NSMutableString *string = @"expert";
NSUInteger strLength = [string length];
NSString *letterToAdd;
NSString *finishedWord;
NSMutableString *randomString = [NSMutableString stringWithCapacity: strLength];
NSMutableArray *randomArray = [[NSMutableArray alloc] init];

NSArray *charArray = [[NSArray alloc] initWithObjects: @"a", @"b", @"c", @"d",
@"e", @"f", @"g", @"h", @"i", @"j", @"k", @"l", @"m",
@"o", @"p", @"q", @"r", @"s", @"t", @"u", @"v", @"w",
@"x", @"y", @"z", nil];

for (int a = 0; a < 26; a++) {
for (int i = 0; i < strLength; i++) {

letterToAdd = [charArray objectAtIndex: arc4random() % [charArray count]];
if([randomString length] < strLength) {
[randomString insertString: letterToAdd atIndex: i];
}

finishedWord = randomString;
}

[randomArray addObject: finishedWord];
}

NSLog(@"Random Array count %i, contents: %@", [randomArray count], randomArray);

最佳答案

我会这样做:

#import "NSString+Shuffle.h"
NSString * string = @"expert";
NSUInteger strLength = [string length];
NSString * alphabet = @"abcdefghijklmnopqrstuvwxyz";
NSMutableSet * randomWords = [NSMutableSet set];

while ([randomWords count] < 26) {
NSString * newWord = [alphabet shuffledString];
newWord = [newWord substringToIndex:strLength];
[randomArray addObject:newWord];
}
NSLog(@"Random set count %d, contents: %@", [randomWords count], randomWords);

然后,您需要在 NSString 上定义一个 shuffledString 类别。此方法只是简单地获取字符串中的字符并随机重新排列它们。通过 Google 可以很容易地找到像样的随机播放算法。

我希望您了解其工作原理的基本概念。我所做的唯一修改是使用 NSSet 而不是 NSArray,以及循环的条件是什么。这消除了重复随机单词的(微小)可能性。

编辑:因为我感觉很慷慨,这里有一个基本的 shuffledString 实现:

//NSString+Shuffle.h
@interface NSString (ShuffleAdditions)

- (NSString *) shuffledString;

@end

//NSString+Shuffle.m
#import "NSString+Shuffle.h"

@implementation NSString (ShuffleAdditions)

- (NSString *) shuffledString {
NSMutableString * shuffled = [self mutableCopy];
NSUInteger length = [shuffled length];
for (int i = 0; i < (4*length); ++i) {
NSString * randomChar = [shuffled subStringWithRange:NSMakeRange(arc4random() % (length-1), 1)];
[shuffled appendString:randomChar];
}
return [shuffled autorelease];
}
@end

关于objective-c - 将随机生成的 NSString 添加到 NSMutableArray 的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1670753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com