import sys, random def bit_generator(zero_freq): if random.uniform(0, 1) < zero_freq: return '0' else: return '1' def word_generator(word_length, zero_freq): word = '' for i in range(word_length): word = word + bit_generator(zero_freq) return word def transmitter(word, word_length, zeros_occur, ones_occur): sended = '' for i in range(word_length): if word[i] == '0': if random.random() < zeros_occur: sended += '0' else: sended += '1' else: if random.random() < ones_occur: sended += '1' else: sended += '0' return sended def simulation(word_length, repetitions, zero_freq, zeros_occur, ones_occur): word = word_generator(word_length, zero_freq) counter = 0.0 for i in range(repetitions): sended = transmitter(word, word_length, zeros_occur, ones_occur) if word == sended: counter += 1 porcentage = counter/repetitions print '%.2f' % porcentage def main(): if len(sys.argv) > 5: word_length = int(sys.argv[1]) repetitions = int(sys.argv[2]) zero_freq = float(sys.argv[3]) zeros_occur = float(sys.argv[4]) ones_occur = float(sys.argv[5]) simulation(word_length, repetitions, zero_freq, zeros_occur, ones_occur) else: print 'Missing parameters' if __name__ == '__main__': main()