I think you're missing something. The network hash rate doesn't "vary". It doesn't go up and down like that chart says. It's fairly constant (probably), growing slowly.
The chart you're seeing is an estimation of the network hash rate based on blocks found. This is what makes it vary, the fact that we're deducing hash rate from "number of hashes found below difficulty per unit of time".
You can't have a script running that makes sure ASICMiner doesn't have more than 50% of the total network hash rate at any point in time, because you don't know what total network hash rate is at some point in time. It can only be deduced, in retrospect, at a certainty that increases with the length of the period over which we average.
The spikes are really coming from luck because of found blocks? Interesting if true... till now i was under the impression that it spikes because of lowering or rising hashspeed... but it makes sense to calculate the speed from found blocks because thats the nearest you can get to hashrate. But i really thought the luck doesnt have such a variance over time. I mean the chart seems to show that it calculates only 3 times a day. I thought the average over such timeframe should prevent good enough to have spikes of 30%... but i didnt think it through really, youre right...
As sipa's graphs show, you really need to go up to a 3-day average, to get a somewhat stable graph:
http://bitcoin.sipa.be/That being said, there is essentially no way to know whether people are continually turning their rigs on and off in a coordinated fashion, or getting lucky, just by looking at when blocks are found.
I'm not good with statistics, but I'm sure you can determine the probability of, for example, 7 blocks being found in an hour instead of 6, or 160 blocks being found in a day instead of 144, and I don't think it's small.
Remember that only around 144 blocks are found per day. It doesn't take more than 15 extra blocks to be found in a day for the 1-day average to increase by 10%.