How to implement burn-redeem where redeem token is 1 of multiple options?

I’m looking to have this interaction:

User burns 1 token (1155), receives 1 token (1155) from 4 possible options (randomized)

Thinking this could be possible, potentially using an onBurn callback?

interface IERC1155CreatorExtensionBurnable is IERC165 {
     * @dev callback handler for burn events
    function onBurn(address owner, uint256[] calldata tokenIds, uint256[] calldata amounts) external;

Would love to know if I’m headed down the right path and if you have any tips, thanks!