I'm assuming you actually have n>2 polygons based on how you framed the 2nd para, but are tying to symplify to the essence by saying n=2 in the 1st para.
If you are trying to define a replicable algorithm guaranteed to give you what you want in "finite time" this is a difficult problem. However, if you are willing to be pragmatic, there are various ways that involve "rerolling the dice", manually or through PyQGIS, until it works.
If it's easy to fit 3 points in each polygon, and n is small, it's probably easiest to generate p 3 n points in the union of the polygons, satisfying the spacing condition overall, where p > 1 is an oversampling factor. Then pick the first 3 points in each polygon. Rerun with increased p if you have less than 3 in any polygon.
If some of the polygons are small enough to get pretty crowded with 3 points in them, and esp. if n is also big so that many rolls of the dice would fail to get you 3 points in some polygon, you'll do better to get 3 p points in each polygon, then pick the first 3 in each polygon that are far enough from all points in other polygons. Rerun if you fail.
If you're super concerned about sampling methodology, will require some statistical thought to ensure your picks are truly independently distributed; if this is the case, you probably already need to be digging into the exact methodology used by the Random points function; I'm not sure of that.
(I'm pretty new to GIS, but this is conceptually very similar to Monte Carlo simulation in science and business, which was my previous life.)