c++ - Skiplast 随机函数需要解释

标签 c++ data-structures

我阅读了 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/

相关文章:

c++ - 是否可以更改只读编辑控件的背景颜色

c++ - 二叉搜索树实现(C++)

algorithm - 包含不需要的单词的文档检索

c - 链接列表没有给出所需的输出

C++ 强制初始化表达式中左值的常量性

c++ - assert() 函数没有出现在反汇编中

c++ - 如何将函数设置为变量并从中调用?

c++ - 复合赋值(乘法)

java - 每当有键匹配时减去两个映射的值?

c - 取消排序数组并保留 C 中数组元素的原始顺序