随机数

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。