您的位置:首页 > 移动开发 > Objective-C

object-c 随机数总结

2016-03-15 13:04 495 查看
解决几个典型的问题:

如何生成一个 Objective-C 的随机数?

使用arc4random()

具体而言,产生一个0-n-1之间的随机数,使用arc4random_uniform(),从而避免模偏差

NSUInteger r = arc4random_uniform(N);


0
1
之间的随机浮点数(double)

如果你要生成一个随机
double
float
,另一个很好的选择是功能较模糊的
rand48
家族,包括
drand48(3)


srand48(time(0));

for (int i = 0; i < 10; i++) {

double r = drand48();

NSLog(@"%f[%d]", r, i);

}

不像
arc4random
函数,
rand48
函数在产生随机数之前需要种子的初始值。这个种子函数
srand48(time(0))
应该只运行一次。

如何从一个
NSArray
选择一个随机元素?

NSArray *arr = @[@1, @2, @3, @5, @0];
if ([arr count] > 0) {

id obj = arr[arc4random_uniform((u_int32_t)[arr count])];
NSLog( @"%@", obj);
}


如何随机排序一个
NSArray

NSArray *arr = @[@1, @2, @3, @5, @0];
NSMutableArray *a = [NSMutableArray arrayWithArray:arr];
if ([arr count] > 1) {

for (NSUInteger i = [arr count] - 1; i > 0; --i) {

[a exchangeObjectAtIndex:i withObjectAtIndex:arc4random_uniform((u_int32_t)(i + 1))];

}
}
NSLog(@"%@", a);


生成一个随机的小写
NSString

如果你是对一个已知的,连续范围的 Unicode 字符做处理,例如小写字母 (
U+0061
U+007A
),你可以从
char
做一个简单的换算:

NSString *letter = [NSString stringWithFormat:@"%c", arc4random_uniform(26) + 'a'];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: