我阅读了 C++ 中的 skipList 实现,但我不理解这个随机函数:
float frand() {
return (float) rand() / RAND_MAX;
}
int random_level() {
static bool first = true;
if (first) {
srand( (unsigned)time(NULL) );
first = false;
}
int lvl = (int)(log(frand())/log(1.-P));
return lvl < MAX_LEVEL ? lvl : MAX_LEVEL;
}
感谢阅读,期待您的回答:)
最佳答案
因此,跳过列表的工作方式是它使新节点链接到级别上的其他节点,随机选择是否添加级别。通常这意味着为新节点要链接到的每个级别抛一次硬币。如果出现正面,则上升一个级别并再次翻转,如果出现反面,则完成。
它的作用是模拟多次抛硬币,但只调用一次随机数源,并应用与连续抛硬币求和具有相同概率分布的函数
关于c++ - Skiplast 随机函数需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3836723/