如何创建随机bit64值

pic*_*ony 4 c++ visual-c++

我在尝试生成随机无符号__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中有一个机会不再做它!

Sir*_*ius 7

如果您使用的是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)中找到.