Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import math
- numberList = [0, 1]
- resultString = ''
- num = 0
- numZero = 0
- numOne = 0
- numDigits = 0;
- messageSize = 1;
- resultDict = {}
- messageResultDict = {}
- def calc_entropy(valueDictionary):
- entropy = 0
- for key in valueDictionary.keys():
- probability = valueDictionary.get(key)
- entropy += probability * math.log(1/probability, 2)
- return entropy
- for i in range(1000000):
- num = random.choice(numberList)
- #print("random number chosen is: ", random.choice(numberList))
- resultString+=str(num)
- #print(resultString)
- numDigits = len(resultString)
- print("Characters in string:", '{:,}'.format(numDigits))
- for element in resultString:
- if int(element) == 0:
- numZero+=1
- else:
- numOne+=1
- print("Number of Zeros:", '{:,}'.format(numZero))
- print("Number of Ones:", '{:,}'.format(numOne))
- for i in range(16):
- messageSize = i+1
- numMessages = math.floor(numDigits/messageSize)
- resultDict = {}
- messageResultDict = {}
- iterator = 0
- while iterator < len(resultString):
- subStr = resultString[iterator:iterator+messageSize]
- if len(subStr)<messageSize:
- break
- if subStr in resultDict:
- resultDict[subStr]+=1
- else:
- resultDict[subStr]=1
- iterator+=messageSize
- #print("Message Length:", messageSize)
- for key in resultDict.keys():
- probability = resultDict.get(key)/numMessages
- messageResultDict[key] = probability
- #print("p(" + key + "):", round(probability, 3))
- print("Entropy of Message Length", messageSize, ":", round(calc_entropy(messageResultDict), 3))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement