首页 > 解决方案 > 如何在 C 中生成概率为(1 到 100)的随机布尔值?

问题描述

我需要一个函数来生成一个随机布尔值,给定概率从 1 到 100。

我试过这个:

int randProb(int chance, int min, int max) { 
     int random = rand();
     if (random < (RAND_MAX) / chance / 10) 
         return -(random % (max - min + 1) + min);
     else
         return (random % (max - min + 1) + min);
}

但是当我调用它时,将 1 作为概率传递

randProb(1, 0, 1)

有时它返回 1,有时返回 -1,有时返回 0。

当我调用它时,通过 100 作为概率

randProb(100, 0, 1)

有时返回 0,有时返回 1,因为它应该工作,概率为 100,它应该总是返回 1。

注意时间是这样初始化的:

time_t t;
srand((unsigned) time(&t));

标签: crandom

解决方案


因此,如果我理解正确,您的函数可以返回两个布尔值01. 所以我看不出你需要minmax作为参数的原因。我会这样做,如果我没有正确理解您的问题,请告诉我。

    int randProb (int chance) {
    int random = (rand()%100)+1;
    
    if (random<=chance) {
        return 1;
    }
    else {
        return 0;
    }
}

推荐阅读