gpt4 book ai didi

ios - 为什么 Rand() 总是生成具有固定唯一组计数的随机数?

转载 作者:行者123 更新时间:2023-11-28 19:06:21 25 4
gpt4 key购买 nike

尽管如此,我再次执行以下代码并再次获得相同的输出。但是,我认为它不应该:

int ObjectCount =500;
NSMutableArray *mut_arr = [[NSMutableArray alloc]initWithCapacity:0];
for (int i = 0; i<ObjectCount ; i++)
{
[mut_arr addObject:[NSNumber numberWithInt: rand()%ObjectCount]];
}
NSSet* uniqueSet = [NSSet setWithArray:mut_arr];
NSLog(@"Array of %d objects generates %d Unique Objects",[mut_arr count],[uniqueSet count]);

输出如下:

500 个对象的数组生成 317 个唯一对象

在这里,由于数组包含随机数,因此对于相同的 ObjectCount,唯一集计数应该再次相同。

最佳答案

您实际上并没有生成唯一的 NSNumber 对象;其中一些是相等的。

NSArray 可以包含多个相等的对象。 NSSet 不能。这就是为什么从您的数组创建的集合具有较少对象的原因。

你总是得到 317 个对象的原因是你使用 rand() 而没有播种:Why do I always get the same sequence of random numbers with rand()?

考虑改用 arc4random(),它会自动播种。

关于ios - 为什么 Rand() 总是生成具有固定唯一组计数的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20096836/

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