gpt4 book ai didi

c++ - 试图在两点之间获取一个随机数并得到除以 0 的错误

转载 作者:行者123 更新时间:2023-11-27 23:06:12 27 4
gpt4 key购买 nike

大家好,我有一个关于使用随机数生成器的问题正在尝试解决。

我正在尝试将一个点的 z 轴 设置为两个最近点之间的随机数。

我遇到了一个被零除错误,我想我已经弄明白了为什么会这样。
即使我放入 if 语句,它有时仍然会发生。

这里是代码:(zAxis,range和min都是 float )

1 if (int(range) + int(min) == 0){          //this is the case where min is negative
2 zAxis = rand() % int(range); //max is zero, which will cause error
3 zAxis = -(zAxis / 10);
4 }
5 else{
6 zAxis = rand() % int(range) + int(min); //Getting div by 0 error here
7 zAxis = zAxis / 10;
8 }

我不明白为什么else子句还在执行。我想这一定是 rand() 在幕后的工作方式?

谁能解释一下?

最佳答案

根据您的 if 测试,很明显您认为随机数是由 int(range)int(min )。事实并非如此;取模运算符比加法运算符具有更高的运算符优先级,因此它会在加法运算之前发生。所以你实际上是在用 int(range)rand() 的模数,然后加上 int(min)。这几乎肯定是您的问题。

切换测试以检查 int(range) 是否为零,您应该在正确的轨道上。

关于c++ - 试图在两点之间获取一个随机数并得到除以 0 的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23395142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com