Those two variables were used previously to implement the fisher-yates algorithm. `f_j` correspond to the index of the randomly drawn element and `n_features - f_i` indicate how many (non constant) features were drawn.  

The original sampling fisher-yates  algorithm could be written with our notations as 

```python
# Shuffle the features array
f_i = n_features
while f_i > 0:
    f_j = randint(f_i)
    f_i -= 1
    features[f_i], feature[f_j] =  feature[f_j], features[f_i]
    
```