随机数生成器以哈希密码

时间:2014-05-05 14:28:21

标签: c++

int RandomNum(int n, int nMax)
{
    srand(time(NULL));
    int r = 1 + rand() % nMax;
    while (r == n)
    {
        r = 1 + rand() % nMax;
    }
    return r;
}

int _tmain(int argc, _TCHAR* argv[])
{

    for (int i = 0; i < 10; i++)
    {
        int x=RandomNum(4, 100);
        std::cout << x << "\n";
    }

    return 0;
}

我的VS13是狂野还是什么因为它总是在上面的代码执行中输出相同的数字?调试显示输出显示不同的数字,但一次运行不显示:(

2 个答案:

答案 0 :(得分:3)

循环很短,并且会在一秒钟内循环遍历所有值。这会导致您对rand的所有调用都以相同的种子开始。

只需拨打srand 一次,最好在main功能的早期。

答案 1 :(得分:0)

每次都是你的种子。相反,你只需要做一次。

srand(time(NULL))移至main的开头。