I think everyone mining is probably familiar with this: do multiple outputs get chosen in a predictable order when spent from a single address? If yes, what's the order? Reverse date order? (i.e. highest priority first)
It's complicated. There is some randomness involved in Armory's algorithm, but it's usually unnecessary. I've written a detailed description of it before, and you can traverse the code for it starting here:
https://github.com/etotheipi/BitcoinArmory/blob/master/armoryengine/CoinSelection.py#L582The gist of it is that we create a pool of coin-selection solutions, and then score each solution based on a variety of factors, such as "output anonymity," tx size, spending zero-conf, and most importantly -- number of input addresses linked. The coin-selection solution with the highest score from that function is what is used:
https://github.com/etotheipi/BitcoinArmory/blob/master/armoryengine/CoinSelection.py#L358The pool of coin-selections is created by doing a bunch of different sortings of the UTXOs. Some by straight priority, some by modified "priority", some even have a few random solutions in them. Then we pop off the highest sorted UTXOs until we have a candidate that is close to exactly the output amount, and one aiming for 2x (so that both output sizes are approx the same, if there is change). Those two candidates are added to the pool to be ranked.
The process ends up with about 20 solutions, ranks all of them, and then uses the one with the highest score. Typically, the solutions use the UTXOs with the highest priority. Some of the sortings guarantee that coins from the same address are near each other and thus will typically use multiple inputs from a single address.
So the answer to your question is basically that it's
not consistent, but there is a strong preference for using older UTXOs before newer ones. You're also not guaranteed to use coins from the same address, though it is likely to happen due to the ranking system, which will give a higher score to solutions that have less unique input addresses.