c++ - (C++) 随机数相等,但程序说它们不相等

标签 c++ if-statement random srand

我是初学者,我创建了一个老虎机模拟器。轮子旋转,x、y 和 z 被设置为随机数。我有一个 if 语句来检查是否 x == y == z。当程序运行时,数字实际上是相等的,它运行我的代码说它们不相等。为什么会这样?

例如,cout 语句会说 2 -- 2 -- 2,然后在它们不相等时转到我的 if 语句,我得到“你输了”代码。

我应该补充一点,这并不是每次都会发生。有时它会在它们相等时正确执行 if 语句。这很奇怪。

    srand(time(0));

    int x = (rand() % 2) + 1;
    int y = (rand() % 2) + 1;
    int z = (rand() % 2) + 1;

    std::cout << "The spin results are... " << x << " -- " << y << " -- " << z << std::endl << std::endl;

    if( x == y == z)
    {
    std::cout << "You win!\n\n";
    playerCoins = playerCoins + (coinsBet * 2);
    }
    else 
    {   
        std::cout << "You lose!\n\n";
    }

最佳答案

x == y 可能会产生 0 或 1,具体取决于它们的真值或假值。然后将 0 或 1 与 z 进行比较,这就是给定结果为假的原因。

正确的方法是检查x是否等于z和y是否等于z,这当然也意味着x等于y。 (x == z) && (y == z)

关于c++ - (C++) 随机数相等,但程序说它们不相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31104547/

相关文章:

c++ - Winapi 定时器回调线程,永不返回

ios - 如何防止在暂停场景(取消暂停后)上运行 SKAction,节点纹理在暂停/取消暂停场景后不会改变

r - 如何修复R的错误 “missing value where TRUE/FALSE needed”?

javascript - setInterval 用于运行带有 if 语句的函数不起作用

ios - 随机选择、不重复的Sql语句

c++ - 生成(不是这样)具有特定字符串出现的随机字符串

user-interface - 为什么随机在 REBOL 的 GUI 中不起作用?

c++ - 双链表头节点始终将第一个值返回为 0

c++ - 如何在多个 QT 图形 View 小部件之间同步移动

c++ - (Obj) C++ : Instantiate (reference to) class from template, 访问其成员?