xcode随机数生成器

时间:2011-10-03 21:19:17

标签: objective-c xcode facebook random

我正在构建一个应用程序,显示随机的Facebook个人资料图片,但不知道如何使个人资料ID成为随机数。我显然可以在代码中随机更改它,但需要它是随机的。这是我需要随机的第二个NSString。非常感谢你的帮助!

- (IBAction) nextImagePush {
    NSString *prefix = @"http://graph.facebook.com/";
    NSString *profileId = @"517418970";
    NSString *suffix = @"/picture?type=large";
    NSString* url= [NSString stringWithFormat:@"%@%@%@", prefix, profileId, suffix];
    UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:url]]];
    [imageView setImage:img];

3 个答案:

答案 0 :(得分:3)

NSString *profileId = [NSString stringWithFormat:@"%0.10u", arc4random()];
NSLog(@"profileId: %@", profileId);

NSLog输出:

profileId: 1375609947

已更新以使用arc4random_uniform。 对于范围内的无偏整数:

+ (u_int32_t)randomInRangeLo:(u_int32_t)loBound toHi:(u_int32_t)hiBound {
    int32_t   range = hiBound - loBound + 1;
    u_int32_t random = arc4random_uniform(range);

    return loBound + random;
}

NSString *profileId = [NSString stringWithFormat:@"%0.9u", [AppDelegate randomInRangeLo:0 toHi:999999999]];
NSLog(@"profileId: %@", profileId);

NSLog输出:

profileId: 2500425665

使用SecRandomCopyBytes将需要包含头文件:

#import <Security/SecRandom.h>

和框架:

Security.framework.

更好的版本或OS X&gt; = 10.7或iOS&gt; = 4.3使用arc4random_uniform

+ (u_int32_t)randomInRangeLo:(u_int32_t)loBound toHi:(u_int32_t)hiBound
{
    int32_t   range = hiBound - loBound + 1;
    return loBound + arc4random_uniform(range);
}

答案 1 :(得分:1)

使用rand(3)random(3)arc4random(3)等函数选择一个随机整数很容易,然后使用+[NSString stringWithFormat:]将其转换为字符串{ {1}}格式说明符。

确保您选择的整数对应于有效的 Facebook用户ID更加困难:

  • Facebook会在任何地方记录可能的有效身份证件吗?
  • 他们总是在一定范围内吗?
  • 该范围内的所有ID都有效吗?
  • 有没有办法查询有效身份证的范围?

如果所有这些问题的答案都是“是”,那么你就可以做到,否则它几乎是不可能的,除非Facebook提供你想要的API,我认为这不太可能。

答案 2 :(得分:1)

要以固定间隔生成随机数,您可以使用arc4random()%x。 x表示您想要获得的最大数量。 当然还有其他方法,但这个方法很有效。