我在尝试生成随机无符号__int64值时遇到问题,是否有人能够快速有效地执行此类操作?下面是我正在做的,检查下面的代码.
unsigned __int64 m_RandomKey = 0;
while(m_RandomKey == 0)
{
m_RandomKey = (unsigned __int64) rand() << 32 | rand();
}
Run Code Online (Sandbox Code Playgroud)
生成无符号__int64密钥的最佳方法是什么,以便在一段时间后甚至根本不能再次获得相同的密钥?它不必是唯一的,只要在18,446,744,073,709,551,615中有一个机会不再做它!
如果您使用的是C++ 11,则可以使用std::mt19937_64Mersenne twister算法的原生64位实现.
见http://en.cppreference.com/w/cpp/numeric/random.
它可以在Visual C++ 2010和2012(http://msdn.microsoft.com/en-us/library/ee462314 ( v=vs.100 ) .aspx)中找到.