Iphone srandom的位置(时间(空))

Iphone srandom的位置(时间(空)),iphone,objective-c,xcode4,srand,Iphone,Objective C,Xcode4,Srand,我在我的一个应用程序类的方法中使用函数random()%一些整数,我不知道在哪里放置srandom(time(NULL))来生成不是伪随机而是真随机数。我已经把它放在viewDidLoad中,ViewWill将出现,但它没有帮助 - (NSMutableDictionary *)getUsersFromServer { srand(time(NULL)); //here we're getting list of users from the server N

我在我的一个应用程序类的方法中使用函数random()%一些整数,我不知道在哪里放置srandom(time(NULL))来生成不是伪随机而是真随机数。我已经把它放在viewDidLoad中,ViewWill将出现,但它没有帮助

- (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;
}
-(NSMutableDictionary*)getUsersFromServer
{
srand(时间(空));
//这里我们从服务器获取用户列表
NSMutableDictionary*用户=[[[NSMutableDictionary alloc]init]autorelease];
对于(int i=0;i<19;i++)
{
int wins=rand()%100;浮点f_wins=(浮点)wins;
整数损失=兰德()%100;浮动f_损失=(浮动)损失;
int with dr=rand()%100;float f_with dr=(float)with dr;
浮动收益率=f收益率/((f收益率+f收益率+f收益率+f收益率)/100.0);
[userresults setArray:[NSMutableArray arrayWithObjects:[NSNumber numberWithInt:wins],
[NSNumber numberWithInt:损失],
[NSNumber Number Withint:withdr],
[NSNumber numberWithFloat:win_per],
无]];
[users setObject:userresults forKey:[NSString stringWithFormat:@“Pfeffer ID%i”,i]];
}
[用户结果发布];
返回用户;
}

像这样的。。。代码看起来很糟糕,但其意义是可以理解的。rand()为每个循环迭代生成相同的数字。如果我使用arc4random(),它不会改变任何东西。还是一样的数字

我不认为这是一个关于随机性或种子的问题,我不使用Objective-C,但是

// for each loop iteration:
  [userresults setArray: .... ]      // <-- modify object known as userresults?
  [users setObject:userresults ....] // <-- isn't that the SAME userresults object?
//对于每个循环迭代:

[userresults setArray:…]//错误,它不会使“伪随机数”成为真正的随机数,
srandom
srand
,等等,只需设置种子或初始状态即可。通常种子设定一次(在使用
rand
/
random
之前),最好不要直接基于刻度。。。我不知道还有什么建议是针对IOS的。ok不管是IOS还是其他什么。其中srand(time(NULL))应该被写入类方法中的rand()中?FWIW,
arc4random
建议与IOS相关。是的。确保确实调用了
srand
(首先)并且没有重复调用它(这可能会导致内部状态)。另外,请确保成对使用
srand/rand
srandom/random
。我知道,我已经尝试过了,不幸的是,它也生成了相同的数字