0

毎秒乱数を取得してログに記録するのと、実行中の平均に問題があります。

コード:

-(void)generateNumber:(NSTimer *)numberEachSecond
{        
    NSUInteger random = (arc4random() % 1000) +1;        
    NSMutableArray *listOfNumbers = [[NSMutableArray alloc]init];        
    NSNumber *number = [NSNumber numberWithInteger:random];        
    [listOfNumbers addObject:number];        

    // NSNumber *counter = 0;        
    for (NSNumber *generatedNumber in listOfNumbers) 
    {  
        NSLog(@"%@",generatedNumber);            
    }        
    NSLog(@"%@", listOfNumbers);        
}
4

2 に答える 2

0

乱数を生成するためのロジックは良いようですが、その関数に毎回配列を割り当てる必要はありませんgenerateNumber。次のようにする必要があります。

一度だけ、または必要なときに、どこかに配列を割り当てviewDidLoadますか?

listOfNumbers = [[NSMutableArray alloc]init]; //listOfNumbers should be instance variable

-(void)generateNumber:(NSTimer *)numberEachSecond 
{
    NSUInteger random = (arc4random() % 1000) +1;
    NSNumber *number = [NSNumber numberWithInteger:random];
    [listOfNumbers addObject:number];
}

関数の外ならどこでも使えますが、

NSLog(@"%@", listOfNumbers);
于 2013-05-16T05:36:17.430 に答える
0

このコードは毎秒乱数を生成し、生成されたすべての数値の平均を計算します

.h で

NSMutableArray *listOfNumbers;

int .m

-(void)viewDidLoad{
    listOfNumbers = [[NSMutableArray alloc]init];
    [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(generateNumber:) userInfo:nil repeats:YES];
}


-(void)generateNumber:(NSTimer *)numberEachSecond
{
NSUInteger random = (arc4random() % 1000) +1;
NSNumber *number = [NSNumber numberWithInteger:random];
[listOfNumbers addObject:number];
int total=0;
NSLog(@"%@",generatedNumber);  
for (NSNumber *generatedNumber in listOfNumbers)
{
    total=total + [generatedNumber intValue];
}

int average= total/[listOfNumbers count];
NSLog(@"average -- %d", average);
}
于 2013-05-16T06:41:36.963 に答える