Cocos3.x 怎么获取随机数种子 ??
在开发过程中,我们经常会遇到需要使用随机数的场景,而随机数种子的获取是生成高质量随机数的关键。在 Cocos3.x 里,原本在旧版本使用的获取随机数种子的方法可能会遇到问题。
比如,之前可能会使用如下代码来获取随机数种子:
cc_timeval psv;
CCTimer::gettimeofdayCocos2d( &psv, NULL ); // 计算时间种子
unsigned int tsrans = psv.tv_sec * 1000 + psv.tv_usec / 1000; // 初始化随机数
srand( tsrans );
但在 Cocos3.x 中,CCTimer::gettimeofdayCocos2d 这个函数并不存在,这种方法无法正常使用。
在 Cocos3.x 中,我们可以使用 C++ 标准库中的 <chrono> 来获取当前时间作为随机数种子,示例代码如下:
#include <chrono>
#include <cstdlib>
// 获取当前时间作为随机数种子
unsigned int seed = static_cast<unsigned int>(std::chrono::system_clock::now().time_since_epoch().count());
srand(seed);
上述代码通过 std::chrono::system_clock::now().time_since_epoch().count() 获取了自系统时钟纪元以来的时间点计数,并将其转换为 unsigned int 类型作为随机数种子,然后使用 srand 函数进行初始化。
通过这种方式,我们就可以在 Cocos3.x 中正确地获取随机数种子,从而生成更具随机性的随机数。