We use the “Dealer” from Hans van Staveren and others for complex hand generation.
The syntax for the Dealer language can be a little daunting, and some knowledge of programming would be helpful. You can find documentation on the syntax here
Quick sample below
condition shape(north, any 4333 + any 4423) and hcp(north)>=13