This commit is contained in:
Cachuela 2023-09-25 19:10:40 +08:00
parent 3313f38d43
commit d199135909
1 changed files with 8 additions and 4 deletions

View File

@ -17,7 +17,7 @@
#include "optimizer/geqo_random.h"
void geqo_set_seed(PlannerInfo* root, double seed)
void geqo_set_seed(PlannerInfo* root, double seed)// 设置遗传查询优化的随机种子
{
GeqoPrivateData* priv = (GeqoPrivateData*)root->join_search_private;
@ -26,15 +26,19 @@ void geqo_set_seed(PlannerInfo* root, double seed)
* critical to do so.
*/
errno_t rc = EOK;
rc = memset_s(priv->random_state, sizeof(priv->random_state), 0, sizeof(priv->random_state));
rc = memset_s(priv->random_state, sizeof(priv->random_state), 0, sizeof(priv->random_state));// 使用memset_s将随机状态数组初始化为0
securec_check(rc, "\0", "\0");
// 使用memcpy_s将给定的种子复制到随机状态数组中
rc = memcpy_s(priv->random_state, sizeof(priv->random_state), &seed, Min(sizeof(priv->random_state), sizeof(seed)));
securec_check(rc, "\0", "\0");
}
// 生成随机数0到1之间用于遗传查询优化
double geqo_rand(PlannerInfo* root)
{
GeqoPrivateData* priv = (GeqoPrivateData*)root->join_search_private;
// 使用erand48函数生成随机数基于随机状态数组
return erand48(priv->random_state);
}
/*
*/