問(wèn):給定能隨機(jī)生成整數(shù) 1 到 5 的函數(shù),寫出能隨機(jī)生成整數(shù) 1 到 13 的函數(shù)熟尉。
// [產(chǎn)生1跳芳,5]的隨機(jī)值,且相等
- (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;
}
}
講解:因?yàn)?到25取余得到的1到13的概率是相等的,后面的[26...32],是[1...13]的區(qū)間的一半裹虫,所以概率也是相等的