Definitely get guppet if you can, but if for some reason you cannot get guppet to work, you can use something like this as a fallback option:
#showtooltip Charger
/castrandom [nomounted,@player] Blessing of Wisdom,Seal of Righteousness
/run o=CallCompanion d=DismissCompanion r=random m="MOUNT" c="CRITTER" if IsMounted()==1 then d(m) d(c) a={1,4,6,6} o(c,a[r(4)]) else a={1,2,3} o(m,a[r(3)]) end
This is much more complicated though (frankly it's a pain and the reason why I decided to build my own addons) so again I'm only providing it as a fallback...
This macro will do the following:
1) If you are unmounted, it will apply a random self buff and summon a random* mount
2) If you are mounted, it will dismount and summon a random* minipet
*Just like with /castrandom you can weight it towards the ones you prefer by listing them multiple times, which I prefer over a "flat" random result
It requires that you plug in the indices of the mounts and minipets you like, and update it anytime you get a new mount or minipet, and you also should have some reasonable degree of comfort with scripts (e.g. replace "1,4,6,6" with a comma delimited list of your pet indices and replace "1,2,3" with a comma delimited list of your mount indices... also where it says a[r(
4)] and a[r(
3)] you need to replace the bolded number with the number of entries in your list... and lastly of course replace the "mountup" spells with your own, or remove that line if desired).
