The odds of failing to get thunderbolt 20 times in a row is 524288/1. So how has this happened?
It's called RNG. stands for Random number generation, which is not very random at all.
As an example, i have only ever caught ONE wild shiny outside of community days. That was six months ago, since then plenty more shinys have been released. Wheras other people i know seem to get one every week, get multiple copies of shiny aron, shiny magikarp etc. One person i know caught two shiny wingulls in a row! In two minutes They caught more than i've ever caught.
That's RNG. is it supposed to be random, like the lottery numbers? Yes. Is it truly random? Absolutely not. Same for your non thunderbolt Zapdos.
Couple of sidenotes to prove my point further, my main account has attempted about two dozen tyranitar raids, never seen one above 91% including all the T'tars that ran from me. My alt account has attempted two, one was 100% and the other 98%. The odds of getting two tyranitars with those IV's in a row are 11664 to 1. The odds of those two both being on your alt account, while your main accoiunt has never caught any that high, are even less.
Also, i caught over 20 shinys eevees on community day, which is impressive. But while most people got around 10 or more, i know someone who got zero, over two days. I cannot work out the odds of failing to get any in two days but they're very low.
The odds against any of these scenarios occurring are astronomical in a truly random RNG. Pokemon go does not have a truly random RNG by a long shot.