Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Skiplast随机函数需要解释 我读到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; } float frand(){ 返回(浮动)rand()/rand_MAX; } int random_level(){ 静态布尔优先=真; 如果(第一){ srand((无符号)时间(NULL)); 第一个=假; } int lvl=(int)(log(frand())/log(1.-P)); 返回等级_C++_Data Structures - Fatal编程技术网

Skiplast随机函数需要解释 我读到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; } float frand(){ 返回(浮动)rand()/rand_MAX; } int random_level(){ 静态布尔优先=真; 如果(第一){ srand((无符号)时间(NULL)); 第一个=假; } int lvl=(int)(log(frand())/log(1.-P)); 返回等级

Skiplast随机函数需要解释 我读到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; } float frand(){ 返回(浮动)rand()/rand_MAX; } int random_level(){ 静态布尔优先=真; 如果(第一){ srand((无符号)时间(NULL)); 第一个=假; } int lvl=(int)(log(frand())/log(1.-P)); 返回等级,c++,data-structures,C++,Data Structures,感谢阅读,我正在等待您的答案:)//此函数生成一个介于0和1之间的随机数 浮点数(){ return(float)rand()/rand_MAX;//rand_MAX是rand()返回的最大可能值 } int random_level(){ static bool first=true;//用于跟踪这是否是函数的第一次运行的静态变量 if(first){//如果这是第一次调用函数。。。 srand((unsigned)time(NULL));//从当前时间生成种子 first=false;//将

感谢阅读,我正在等待您的答案:)

//此函数生成一个介于0和1之间的随机数
浮点数(){
return(float)rand()/rand_MAX;//rand_MAX是rand()返回的最大可能值
}
int random_level(){
static bool first=true;//用于跟踪这是否是函数的第一次运行的静态变量
if(first){//如果这是第一次调用函数。。。
srand((unsigned)time(NULL));//从当前时间生成种子
first=false;//将first设置为false
}
int lvl=(int)(log(frand())/log(1.-P));//使用一些奇怪的日志函数生成lvl的值
return lvl
//此函数生成一个介于0和1之间的随机数
浮点数(){
return(float)rand()/rand_MAX;//rand_MAX是rand()返回的最大可能值
}
int random_level(){
static bool first=true;//用于跟踪这是否是函数的第一次运行的静态变量
if(first){//如果这是第一次调用函数。。。
srand((unsigned)time(NULL));//从当前时间生成种子
first=false;//将first设置为false
}
int lvl=(int)(log(frand())/log(1.-P));//使用一些奇怪的日志函数生成lvl的值
return lvl
因此,SkipList的工作方式是让新节点链接到其他级别的节点,随机选择是否添加级别。通常,这意味着为新节点要链接到的每个关卡投掷一次硬币。如果是正面,你就上一层楼再翻一翻,如果是反面,你就完了


这样做的目的是模拟硬币多次翻转,但只调用一次随机数源,并应用与连续硬币翻转求和具有相同概率分布的函数。因此,skiplists的工作方式是,它使新节点链接到不同级别的其他节点,随机选择是否添加关卡。通常,这意味着为新节点要链接到的每个关卡投掷一次硬币。如果是正面,你就上一层楼再翻一翻,如果是反面,你就完了


它的作用是模拟硬币多次翻转,但只调用一次随机数源,并应用一个概率分布与连续硬币翻转总和相同的函数

你没有得到什么?你想知道什么?你不知道什么?你想知道什么?我喜欢你称之为“一些奇怪的日志函数”的方式,但这正是我需要知道的。我不是数学天才,所以我不知道它到底想实现什么,但我认为它将随机数的分布移到了一边。我喜欢你称之为“一些奇怪的日志函数”的方式但这正是我需要知道的。我不是一个数学天才,所以我不知道它到底想要完成什么,但我认为它正在把随机数的分布移到一边。
  // this function generates a random number between 0 and 1
float frand() {
    return (float) rand() / RAND_MAX;  // RAND_MAX is the biggest possible value returned by rand()
}
int random_level() {
    static bool first = true;   // a static variable to track whether or not this is the first run of the function

    if (first) {  // if this is the first time the function has been called...
        srand( (unsigned)time(NULL) );    // generate a seed from the current time
        first = false; // set first to false
    }

    int lvl = (int)(log(frand())/log(1.-P));  // generate the value of lvl with some weird log functions
    return lvl < MAX_LEVEL ? lvl : MAX_LEVEL;  // cap the value to MAX_LEVEL, and return
}