给定NSArray对象,例如[NSArray arrayWithObjects:A, B, C, D, E, nil]
,我可以使用for loop
和arc4random
函数从数组中选择一组随机的 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的。感谢。