アプリのクラスの1つのメソッドで関数random()%some integerを使用していますが、疑似乱数ではなく真の乱数を生成するためにsrandom(時間(NULL))をどこに置くかわかりません。私はすでにそれをviewDidLoadとviewWillAppearに入れましたが、役に立ちません。
- (NSMutableDictionary *)getUsersFromServer
{
srand(time(NULL));
//here we're getting list of users from the server
NSMutableDictionary * users = [[[NSMutableDictionary alloc] init] autorelease];
for (int i = 0;i < 19;i++)
{
int wins = rand()%100; float f_wins = (float)wins;
int losses = rand()%100; float f_losses = (float)losses;
int withdr = rand()%100; float f_withdr = (float)withdr;
float win_per = f_wins / ((f_wins + f_losses + f_withdr) / 100.0);
[userresults setArray:[NSMutableArray arrayWithObjects:[NSNumber numberWithInt:wins],
[NSNumber numberWithInt:losses],
[NSNumber numberWithInt:withdr],
[ NSNumber numberWithFloat:win_per],
nil]];
[users setObject:userresults forKey:[NSString stringWithFormat:@"Pfeffer ID %i",i]];
}
[userresults release];
return users;
}
このようなもの...コードはひどいように見えますが、その意味は理解できます。rand()は、ループの反復ごとに同じ数を生成します。arc4random()を使用しても、何も変更されません。まだ同じ数