The validators are chosen randomly based on their voting powers. Indeed, all the bonded validators are sorted and put in a
list, where the first element is the highest-staked validator, while the last element contains the lowest-staked one. In each AI request, the system updates this
list since there may be an update in the validator set, or the voting powers have been changed. Within the
list, each validator is duplicated n - i - 1 times, with i is the index of the
list's element, and n is the length of the list. This helps increase the chances of getting chosen for those validators with high voting powers, while validators in the lower ranks also can participate in the AI request flow. Note that if the voting powers of two validators are equal, both will be duplicated with the same number.