我想在QT中生成唯一的随机数序列,使用QDateTime :: currentDateTime().toTime_t()作为种子值,qrand()会生成唯一的随机数吗?
号qrand只能产生尽可能多的唯一的号码贴合到一个整数,所以-无论何种实施-你不能指望的唯一性.
此外,知道不同的种子创建不同的随机整数将产生一种可预测性,有效地使其qrand不再随机.
编辑:我发誓,我不是想通过张贴卡通来取笑你; 我认为这是对问题的一个很好的解释:
根据您存储会话ID的方式,您可以使用UUID生成(大部分)保证唯一标识符.请参阅文档QUuid.还要注意这一点(粗体添加):
你也可以使用
createUuid().生成的UUIDcreateUuid()是随机类型.它们的QUuid::Version位被设置为QUuid::Random,它们的QUuid::Variant位被设置为QUuid::DCE.UUID的其余部分由随机数组成.从理论上讲,这意味着生成的UUID很createUuid()可能不是唯一的.但这是一个非常小的机会.
我可以保证这些生成的UUID不一定是唯一的,所以如果你确实需要它们是唯一的,请查看libuuid或类似的东西.