黑马程序员技术交流社区

标题: 为什么使用 [set anyObject] 每次取出的数都一样。 [打印本页]

作者: 落羽    时间: 2015-4-17 17:21
标题: 为什么使用 [set anyObject] 每次取出的数都一样。
//,掷骰子100次,输出每个号出现的次数;为什么使用  [set  anyObject] 每次取出的数都一样。

#import <Foundation/Foundation.h>
int  main()
{
    int  n1 = 0 ,n2 = 0 , n3 = 0 , n4 = 0 , n5 = 0 , n6 = 0 ;
    NSSet *set  = [NSSet setWithObjects:@1 ,@2 ,@3 ,@4 ,@5 ,@6,nil];
    for(int i = 0 ;i<100 ;i++)
    {
        NSNumber *m =  [set  anyObject];
        int d = [m  intValue];
        NSLog(@"%d",d ) ;
        switch (d) {
            case 1:
                n1++ ;
                break;
            case 2:
                n2++ ;
                break ;
            case 3:
                n3++ ;
                break ;
            case 4 :
                n4++ ;
            case 5 :
                n5++ ;
            case 6 :
                n6++ ;
                break;
        }
    }
        NSLog(@"1出现的次数是%d,2出现的次数是%d,3是%d,4是%d,5是%d,6是%d",n1,n2,n3,n4,n5,n6);
      return  0  ;
}


作者: fantacyleo    时间: 2015-4-17 17:58
这个问题在API 文档中说得很清楚了:"the selection is not guaranteed to be random"——不保证返回项是随机的,也就是说,每次返回一样也是允许的,你不能指望这个方法来实现随机数的功能。产生随机数还是用arc4random函数吧




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2