C++ 用于散列密码的随机数生成器 intrandomnum(intn,intnmax) { srand(时间(空)); int r=1+rand()%nMax; while(r==n) { r=1+rand()%nMax; } 返回r; } int _tmain(int argc,_TCHAR*argv[] { 对于(int i=0;i

C++ 用于散列密码的随机数生成器 intrandomnum(intn,intnmax) { srand(时间(空)); int r=1+rand()%nMax; while(r==n) { r=1+rand()%nMax; } 返回r; } int _tmain(int argc,_TCHAR*argv[] { 对于(int i=0;i,c++,C++,循环很短,将在一秒钟内循环所有值。这将导致对rand的所有调用都以相同的种子开始 只调用srand一次,最好是在主函数的早期调用。循环很短,会在一秒钟内循环所有值。这会导致对rand的所有调用都从同一种子开始 只调用srand一次,最好是在主函数的早期调用。循环很短,会在一秒钟内循环所有值。这会导致对rand的所有调用都从同一种子开始 只调用srand一次,最好是在主函数的早期调用。循环很短,会在一秒钟内循环所有值。这会导致对rand的所有调用都从同一种子开始 只需调用srand一次,最好是在主

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


只调用
srand
一次,最好是在
主函数的早期调用。

循环很短,会在一秒钟内循环所有值。这会导致对
rand
的所有调用都从同一种子开始


只调用
srand
一次,最好是在
主函数的早期调用。

循环很短,会在一秒钟内循环所有值。这会导致对
rand
的所有调用都从同一种子开始


只调用
srand
一次,最好是在
主函数的早期调用。

循环很短,会在一秒钟内循环所有值。这会导致对
rand
的所有调用都从同一种子开始


只需调用
srand
一次,最好是在
主功能的早期调用。

您每次都在指定种子。相反,您只需执行一次


srand(time(NULL))
移动到main的开头。

您每次都在指定种子。相反,您只需执行一次


srand(time(NULL))
移动到main的开头。

您每次都在指定种子。相反,您只需执行一次


srand(time(NULL))
移动到main的开头。

您每次都在指定种子。相反,您只需执行一次


srand(time(NULL))
移动到main的开头。

在循环之前,您需要将
srand()
移动到
main()
。您可以解释更多吗?请参阅。通过调用
srand(time(NULL))
可以复制种子
rand()
。时间分辨率足够低,以至于
time(NULL)
在循环过程中不会发生任何变化,因此您会一直将随机生成器重置为相同的状态。当您将数字输出到控制台时,您会看到它们发生了变化,因为输出到控制台是一个缓慢的操作,会给循环增加延迟。您需要将
srand()
移动到
main()
,在循环之前。您能解释更多吗?请参阅。通过调用
srand(time(NULL))
,您的种子可能重复
rand()
。时间分辨率低到
time(NULL)
在循环过程中不会发生任何变化,因此您会一直将随机生成器重置为相同的状态。当您将数字输出到控制台时,您会看到它们发生了变化,因为输出到控制台是一个缓慢的操作,会给循环增加延迟。您需要将
srand()
移动到
main()
,在循环之前。您能解释更多吗?请参阅。通过调用
srand(time(NULL))
,您的种子可能重复
rand()
。时间分辨率低到
time(NULL)
在循环过程中不会发生任何变化,因此您会一直将随机生成器重置为相同的状态。当您将数字输出到控制台时,您会看到它们发生了变化,因为输出到控制台是一个缓慢的操作,会给循环增加延迟。您需要将
srand()
移动到
main()
,在循环之前。您能解释更多吗?请参阅。通过调用
srand(time(NULL))
,您的种子可能重复
rand()
。时间分辨率低到
time(NULL)
在循环过程中不会发生任何变化,因此您会不断将随机生成器重置为相同的状态。当您将数字输出到控制台时,您会看到它们发生了变化,因为输出到控制台是一项缓慢的操作,会给循环增加延迟。
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;
}