问:给定能随机生成整数 1 到 5 的函数,写出能随机生成整数 1 到 13 的函数。
// [产生1,5]的随机值,且相等
- (NSInteger)rand5 {
NSInteger num = rand()%5+1;
return num;
}
- (NSInteger)rand13 {
int i = [self rand5] - 1;// 0到[4]
int j = [self rand5] - 1; //[0到[4]]
int num = i *7+j; //[0...32],
if (num >25) {
return [self rand13];
} else {
return num %13+1;
}
}
讲解:因为0到25取余得到的1到13的概率是相等的,后面的[26...32],是[1...13]的区间的一半,所以概率也是相等的
网友评论