我正在构建一个应用程序,显示随机的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];
答案 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提供你想要的API,我认为这不太可能。
答案 2 :(得分:1)
要以固定间隔生成随机数,您可以使用arc4random()%x。 x表示您想要获得的最大数量。 当然还有其他方法,但这个方法很有效。