NSArray指数的权重选择

时间:2015-01-01 13:17:31

标签: ios random nsarray probability

给定NSArray对象,例如[NSArray arrayWithObjects:A, B, C, D, E, nil],我可以使用for looparc4random函数从数组中选择一组随机的 N个对象例如

NSArray *objArray = [NSArray arrayWithObjects:A, B, C, D, E, nil];
NSMutableArray *newArray = [NSMutableArray alloc] init];
for(int i=0;i<N;i++){

   id randIndex = arc4random() % N;
   [newArray addObject:[objArray objectAtIndex:randIndex];
}

这很好用,但我想要的是能够为objArray中的每个元素指定一个权重,用于定义randIndex选择元素的可能性。看来这个选择可能取决于之前的选择(或不是)。

NSArray *weights = [NSArray arrayWithObjects:@1, @0.5, @1, @1, @1]; would mean:

A - 1
B - 0.5 // 0.5 times as likely to appear
C - 0.3 // 0.3 times as likely to appear
D - 0.1 // 0.1x times as likely to appear
E - 0   // Will never appear

等因此上面的权重将导致更多的对象A和没有对象E的。感谢。

0 个答案:

没有答案