这是跳跃链表的实现函数中的两个函数,但我看不明白这两个函数为什么这样写,还望大师们指点指点,谢谢.
void skiplist<T>::choospowers()
{
    powers[maxlevel-1]=(2<<(maxlevel-1))-1;
    for(int i=maxlevel-2,j=0;i>==0;i--,j++)
        powers[i]=powers[i+1]-(2<<j);
}
int skiplist<T>::chooselevel()
{
    int i,r=rand()%powers[maxlevel-1]+1;
    for(i=1;i<maxlevel;i++)
        if(r<powers[i])
            return i-1;
}