Hey Mark! Cool idea. I think you would want to do that off chain. You could, of course, have a randomizer function in your contract, but then you'd still need to reference the randomized data to select (or create) your artwork and upload it to IPFS. I'm not aware of any great examples of this unfortunately.
if you do find any, share them here!