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;
}