Thanks, there is still one flaw :
By counting only "wins" you miss one very important piece of data : how fast was a method compared to the other on each simulation ? A win 5x faster does not have the same value as a win 1.2x faster.
This can be changed by summing the number of checks made over all the simulations, like this :
results = {"sequential": {"wins": 0, "checks": 0}, "precise": {"wins": 0, "checks": 0}, "ties": 0}
...
results["sequential"]["checks"] += seq_result["checks"]
results["precise"]["checks"] += pre_result["checks"]
.....
Sequential: {results['sequential']['checks']}
Prefix: {results['precise']['checks']}
Just as the script commonly handles it, it's fine, because the important thing here was to demonstrate that prefixes are more efficient in the majority of attempts. It does not include computational load, because that's unfair, as we omit the entire Bitcoin process, and besides, it's not the same to omit 1000 keys out of 5000 as to use a 16**12 setup to give an example... but the basic aspect has already been demonstrated, which was the probabilistic success rate.