Skip to content

Instantly share code, notes, and snippets.

@dirtyhenry
Created January 4, 2013 16:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dirtyhenry/4454093 to your computer and use it in GitHub Desktop.
Save dirtyhenry/4454093 to your computer and use it in GitHub Desktop.
arc4random vs arc4random_uniform distribution in iOS
NSMutableArray *stats1 = [NSMutableArray arrayWithObjects:[NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], nil];
NSMutableArray *stats2 = [NSMutableArray arrayWithObjects:[NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], [NSNumber numberWithInteger:0], nil];
NSInteger nbSamples = 1000;
for (NSInteger i = 0; i < nbSamples; i++) {
NSInteger new = (arc4random() % 10);
if (new >= 0 && new <= 9) {
NSNumber *prev = [stats1 objectAtIndex:new];
NSNumber *newNumber = [NSNumber numberWithInteger:[prev integerValue] + 1];
[stats1 replaceObjectAtIndex:new withObject:newNumber];
} else {
ELog(@"ERROR");
}
}
for (NSInteger i = 0; i < nbSamples; i++) {
NSInteger new = arc4random_uniform(10);
if (new >= 0 && new <= 9) {
NSNumber *prev = [stats2 objectAtIndex:new];
NSNumber *newNumber = [NSNumber numberWithInteger:[prev integerValue] + 1];
[stats2 replaceObjectAtIndex:new withObject:newNumber];
} else {
ELog(@"ERROR");
}
}
for (int i = 0 ; i < 10; i++) {
DLog(@"Number %d: %@ - %@", i, [stats1 objectAtIndex:i], [stats2 objectAtIndex:i]);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment