gpt4 book ai didi

xcode - Xcode 中使用 arc4random 的随机数非重复算法中的数组为空

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:24:30 25 4
gpt4 key购买 nike

我在 Xcode 中使用 arc4random 生成随机值时遇到问题。我想从随机生成中排除那些已经被拾取的数字。这是我写的算法

int randomValue =  (arc4random() % numberofquest)+ 1;
int kk=1;

if (kk==1) {

//first time add the first random value
[oldquest addObject: randomValue];
}
else {
//control if the number is already in the vector
for (int j=1; j<[oldquest count]; j++)
{

if (randomValue==oldquest[j])
{

randomValue = (arc4random() % numerodomande)+ 1;
}
else
{
[oldquest addObject: randomValue];
}
}

}
kk=kk+1

但它不起作用。我想可能是因为 randomvalue 和数组中的第 j 个对象不可比较(int 第一个和 string 第二个?)。谁能帮帮我?

最佳答案

对不起,阿瑞斯的回答几乎是正确的。您可以比较两个不同的 NSNumber 对象。

这是我的解决方案:

- (int) generateRandomNumber {
int number = arc4random() % 100;

if ([chosen_numbers indexOfObject:[NSNumber numberWithInt:number]]!=NSNotFound)
number = [self generateRandomNumber];

[chosen_numbers addObject:[NSNumber numberWithInt:number]];
return number;
}

由于 Alessandro 在实现它时遇到了一些麻烦,因此在 UIViewController 类中提供了一个示例。这适用于 100 个数字:

#import "ViewController.h"

@implementation ViewController {
NSMutableArray * chosen_numbers;
}

- (void)viewDidLoad
{
[super viewDidLoad];

chosen_numbers = [[NSMutableArray alloc] init];

for(int i = 0; i<90; i++) {
NSLog(@"number: %d",[self generateRandomNumber]);
}
}

- (int) generateRandomNumber {
int number = arc4random() % 100;

if ([chosen_numbers indexOfObject:[NSNumber numberWithInt:number]]!=NSNotFound)
number = [self generateRandomNumber];

[chosen_numbers addObject:[NSNumber numberWithInt:number]];
return number;
}

@end

关于xcode - Xcode 中使用 arc4random 的随机数非重复算法中的数组为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15001560/

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