c - 如何在 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));
解决方案
因此,如果我理解正确,您的函数可以返回两个布尔值0
和1
. 所以我看不出你需要min
和max
作为参数的原因。我会这样做,如果我没有正确理解您的问题,请告诉我。
int randProb (int chance) {
int random = (rand()%100)+1;
if (random<=chance) {
return 1;
}
else {
return 0;
}
}
推荐阅读
- android - 如何从python中的.pb文件恢复Tensorflow模型?
- c# - 2D Ray 总是击中它所连接的 GameObject
- c# - 连接到 AWS 上设置的 ActiveMQ 时连接会在几秒钟后关闭
- html - 使用引导程序隐藏和显示元素的问题
- python - 物体检测动作
- sonarqube - dotnet.exe 锁定 SonarScanner.MSBuild.Common.dll
- opengl - 无法在 Cygwin/X 中启用 vsync
- c# - 异步方法未在 MVC 授权过滤器中返回
- java - 通过 HBase 仅读取一行中的最新值 get
- pact - Pact Basic 测试失败