1. A method of receiving data transmitted from a source over a communications channel, wherein the data is transmitted as a plurality of output symbols and is generated from at least one symbol in a combined set of input symbols and redundant symbols, wherein the number of valid output symbols for a given set of symbols in the combined set that can be generated is independent of the number of input symbols in the input file, wherein the input symbols are from an ordered set of input symbols, and wherein the redundant symbols are generated from the input symbols, the method comprising: upon receiving at least a subset of the output symbols from the communications channel, determining at least estimates of output symbol probability distributions, wherein an output symbol probability distribution represents probabilities, given a received output symbol, that a particular output symbol was transmitted; determining, from the estimates or values of output symbol probability distributions, input symbol probability distributions, wherein an input symbol probability distribution represents probabilities of particular input symbols having been encoded to form the received output symbols; regenerating at least a subset of the symbols in the combined set from the received output symbols, the subset of the symbols in the combined set including at least one regenerated input symbol or at least one regenerated redundant symbol; and upon receiving at least a subset of the output symbols, regenerating at least a subset of the symbols in the combined set from the output symbols, the subset of the symbols in the combined set including at least one regenerated input symbol or at least one of regenerated redundant symbol, wherein the steps of regenerating use the input symbol probability distributions.