c ++ rand()仅在1-10之间生成8

时间:2018-05-02 01:32:56

标签: c++ random

我试图在1-10之间生成一个随机数,然后让我的switch语句输出一周中的随机日,但我无法输出除8之外的任何其他数字

#include <iostream>
#include <cstdlib>
using namespace std;

int main()
{
    int a = rand() % 10 + 1;
    cout << a << endl;
    if (a != 4)
    { cout << endl << "a is less than 4" << endl;}
    else
    { cout << endl << "a is greater than or equal to 4";}


    return 0;
}

3 个答案:

答案 0 :(得分:2)

您应该在srand(time(nullptr))之前使用rand()

答案 1 :(得分:2)

在使用之前,您应该使用srand()种子rand()

rand()的输出取决于使用的种子。每次运行程序时都会使用相同的默认种子,每次都会产生相同的输出。

种子兰的常用方法是随着时间的推移:

#include <cstdlib>
#include <ctime>

int main() {

    // Use current time as seed for random generator
    srand(time(0));

    // Do stuff with rand()

}

这样每次运行程序时都会得到不同的结果,因为每次执行程序的时间都会不同。

答案 2 :(得分:2)

初始化随机种子并继续。

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

    int a = rand() % 10 + 1;

    cout << a << endl;
    if (a < 4)
    {
        cout << endl << "a is less than 4" << endl;
    }
    else
    {
        cout << endl << "a is greater than or equal to 4";}
        return 0;
    }