A probability of 0.508 seems close enough to 0.5 for all practical matters. However if you need it to be exactly 0.5, you could instead flip the same coin twice, with the same side up in both starts. If you get two heads or two tails, disregard and repeat; else, your result is decided by tails-heads vs. heads-tails. Here's the probability table for that:
- ~~p(same, same) = (0.508)*(0.508) = 0.258~~
- p(same, opposite) = (0.508)*(0.492) = 0.250
- p(opposite, same) = (0.492)*(0.508) = 0.250
- ~~p(opposite, opposite) = (0.492)*(0.492) = 0.242~~
This also works with unfair coins. Let's say that we got a coin with 0.7 likelihood to land on heads, 0.3 on tails:
- ~~p(H,H) = (0.7)*(0.7) = 0.49~~
- p(H,T) = (0.7)*(0.3) = 0.21
- p(T,H) = (0.3)*(0.7) = 0.21
- ~~p(T,T) = (0.3)*(0.3) = 0.09~~