随机数

问:给定能随机生成整数 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]的区间的一半,所以概率也是相等的

你可能感兴趣的:(随机数)