rand_word can be passed a reweight func