As a computer scientist, I can certainly assure you that random events CAN and do produce totally unpredictable order and complexity, given some selective pressures. Those, which perform about the same, are copied at the same rate. Given enough generations, they have almost no resemblance to the original progenitor, and achieve the desired goals in ways the person who wrote the progenitor never expected. Simple - bad mutations don't live and get weeded out.
Good ones accumulate.
Given a replicating system, random errors in replication, and some kind of selective pressures, evolution is unavoidable. In fact, it would take a divine intervention to prevent it. Moreover, having been arrived at by a series of random changes, they are remarkably resistant to detrimental changes. Scrambling a byte in a successful A-Life program may degrade its performance, but is far less likely to crash it than a program written by a person. Just like living organisms, where vast majority of mutations are actually neutral, or very slightly detrimental.