In the "Filters:" section of the Tutorial panel, there is a choice of strategies available for controlling the words you are drilled.
Whatever strategy you use, the application compiles a list of statistics for each word in the list, and stores it in the database. That is, if you are working with a file called myWordlist.fsd, the statistics are recorded there. Every change in a word's difficulty is timestamped, and if there is no change since the last time, the final timestamp is extended.
These statistics may be consulted by various stategies to determine the next most appropriate word to show the user.
This is simply the next word that passes the filters. The application searches sequentially through the wordlist in it's current order, stoping at the next matching word. Notice that if you randomise a list, all the words in the list most likely move relative to each other. The Wordlist's statistics file is not consulted to determine the "Next Matching" word.
This gives the word the user has found the hardest, that was reviewed least recently. Notice that even if the wordlist was randomised, this word is still the same.
This gives the word the user has found the hardest, that was changed least recently. Notice that even if the wordlist was randomised, this word is still the same. This allows you to review words that have been in the hardest category for the longest time.
This is the recommended strategy. It accelerates the words out of the way, depending on your previous responses. That means, the word dificulty has 'momentum', like moving a large stone. When you apply a response in the opposite direction (ie you start getting a particular word right when you have been getting it wrong for a while), it immediately stops accelerating in that direction. Though harder to understand, this strategy is very efficient in quickly adapting to your study needs, and has been made the default in version 4.0 onwards.
It maintains an internal buffer of about 20 words - a word does not become a candidate for re selection, even if it has the highest weighting in the list, if it is in the buffer. You can see how it tracks words using the graph function - or just trust it to do a good job.
Other stategies exist. I would be interested in hearing from users who know of scientific papers about alternatives.