IF语句和rand()函数无法正常工作。 (C ++)

时间:2018-01-18 09:14:58

标签: c++

每次运行此代码时,IF语句都不严格遵循给定的条件。当我生成1或2时,它有时也显示“noway”,有时当我生成6时它不会显示它。我不知道发生了什么。

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{
    srand(time(0)) ;

    for(int x = 1; x <2; x++)
    {
        cout << (rand()%6) << endl ;
    }

    if((rand()%6) >= 3)
    {
        cout << " nowaay " ;
    }
}

1 个答案:

答案 0 :(得分:1)

您第一次rand()来电输出的值:

cout << (rand()%6) << endl ;

与您第二次通话中测试的值不同:

if((rand()%6) <= 3) {

你无法从前者推断出后者。要掌握它,请将您的if测试替换为:

const int alea = rand() % 6;
std::cout << "alea = " << alea << "\n";
if (alea <= 3) {
    std::cout << "way\n";
}