Shooting Curve Flatteners
There is a problem with this approach. Typically, you have about 10 sectors to shoot (if we divide guess factor range, by the bot body). Good curve flattener could be anywhere in a random fashion, even in just visited sector. So at best you increased your chances to 1/9 vs 1/10, in practice it is still 1/10. I have a random gun among list of available ones form my bots, often it gives the best result against curve flatteners. Sometimes, antiguess factor would lead you in wrong direction: I think DrussGT avoids GF=0, but with negative weight for visited spots, you soon will fire at GF=0 only, and unavoidably lose.
My strategy just fire randomly in this case, at least you get a chance to hit.
Actually you can increase the chance of hitting by firing when the robot is near a wall.
Randomly choosing an angle in the reachable area is a good fallback strategy. DrussGT does this, although this gun rarely gets used. It is more as a safety in case someone copy-pastes his gun and then surfs it.
People have experimented a lot with Anti-Surfer guns over the years, but nothing seems to work better than a GF gun that only works on very recent data. And once the enemy starts flattening there is very little you can do. At this point fighting at a distance or bulletpower where you are more competitive might be a better idea, and turn on your own curve flattening as well.
You are right. I just tried a weighted random gun with reverse weights and it didn't do better than the anti-surfer gun.