How to sample with guaranteed minimum spacing?
Let's say you have very frequent data across a period of time T and you want to sample N points.
Instead of sampling points directly you could sample the time that separate them. You then just need to add 12 hours to all gaps to enforce your constraints.
To do so you could sample N points uniformly in [0, T - (N-1) x 12h] and then compute the difference between consecutive points.
Sampling N + 1 points in [0, T - N x 12h] allows you to also sample the first timestep.
Afterwards you can match thoses times with the closest samples available in your data.
import numpy as np
T = 500
N = 200
min_diff = 0.5

t_diffs = min_diff + np.diff(np.sort(np.random.uniform(0, T - N * min_diff, N+1)))

times = np.cumsum(t_diffs)

import matplotlib.pyplot as plt
plt.figure()
plt.scatter(np.arange(len(times)), times)
plt.ylabel(&quot;Time&quot;)
plt.xlabel(&quot;Point index&quot;)
plt.savefig(&quot;fig.png&quot;)
plt.show()