daily pastebin goal
31%
SHARE
TWEET

Untitled

a guest Jan 24th, 2018 51 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import random
  2.  
  3. def getErrStream(streamSize):
  4.     """Creates error stream according to init parametrs"""
  5.  
  6.     errstream = []
  7.     for i in range(0, streamSize):
  8.         errstream.append(random.randrange(2))
  9.    
  10.     return errstream
  11.  
  12. def analizeErrStream(errstream, k):
  13.     """Calculates some characteristics of the error stream.
  14.        Returns dictionary with them."""
  15.  
  16.     inPacket = False
  17.     errcount = zerocount = pcount = sumplen = sumerrprob = 0
  18.     i = 0
  19.  
  20.     while i < len(errstream):
  21.         if errstream[i]:
  22.             inPacket = True
  23.             pcount += 1
  24.             plen = 0
  25.             perr = 0
  26.             while i < len(errstream):
  27.                 #sumpacklen += 1
  28.                 if errstream[i]:
  29.                     errcount += 1
  30.                     perr += 1
  31.                     zerocount = 0
  32.                 else:
  33.                     zerocount += 1
  34.                 if zerocount > k:
  35.                     inPacket = False
  36.                     plen -= (zerocount - 1)
  37.                     zerocount = 0
  38.                     sumplen += plen
  39.                     sumerrprob += perr / plen
  40.                     break
  41.                 plen += 1
  42.                 i += 1
  43.         i += 1
  44.  
  45.     print('Текущая длина:', plen)
  46.     if inPacket:
  47.         sumplen += plen
  48.         sumerrprob += perr / plen
  49.  
  50.     print('Суммарная длина пакетов:', sumplen)
  51.     return {'errprob': errcount / len(errstream), 'pkgcount': pcount,
  52.             'pkgavlen': sumplen / pcount, 'pkgavprob': sumerrprob / pcount}
  53.  
  54.  
  55.  
  56. errstream = getErrStream(int(input('Введите длину потока ошибок: ')))
  57. print('Поток ошибок:', errstream)
  58.  
  59. streaminfo = analizeErrStream(errstream, int(input('Введите допустимый интервал нулей в пакете: ')))
  60.  
  61. print('Вероятность ошибки:', streaminfo['errprob'])
  62. print('Количество пакетов:', streaminfo['pkgcount'])
  63. print('Средняя длина пакета:', streaminfo['pkgavlen'])
  64. print('Средняя вероятность ошибки в пакете:', streaminfo['pkgavprob'])
RAW Paste Data
Top