enter
This commit is contained in:
parent
3313f38d43
commit
d199135909
|
|
@ -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);
|
||||
}
|
||||
/*
|
||||
第一个函数用于设置随机种子,第二个函数用于生成遗传查询优化中的随机数。
|
||||
*/
|
||||
Loading…
Reference in New Issue