トップ «前の日記(2016-05-04(Wed)) 最新 次の日記(2016-05-06(Fri))» 編集

屑俺日記

僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。


2016-05-05(Thu) 夜明けは曇ってたように見えたが

たぶん衝突してるはず

出現頻度をもう少し詰めてみた。
ランダムな番号を一千個取り、 番号ごとに末尾一文字の違う番号を9個作り、 それぞれの「検査数字」を取って数える。

昨日のスクリプトをck.pyという名前で関数化する。

#!/usr/bin/env python
import random
 
def myrand():
  random.seed()
  example = random.randint(10000000000, 99999999999)
  return example
 
def checknum(number):
  numlist = []
  for x in range(1,12):
    numlist.append( (number % (10**x))/(10**(x-1)))
  checkdigit = \
     11 - (\
     numlist[0]*2 + \
     numlist[1]*3 + \
     numlist[2]*4 + \
     numlist[3]*5 + \
     numlist[4]*6 + \
     numlist[5]*7 + \
     numlist[6]*2 + \
     numlist[7]*3 + \
     numlist[8]*4 + \
     numlist[9]*5 + \
     numlist[10]*6)  \
     % 11  
  if checkdigit >= 10:
    checkdigit = 0
  return checkdigit,numlist
#!/usr/bin/env python
import ck
 
all_list = []
for x in range(1000):
  randnum = ck.myrand()
  for y in range(-5,5):
    cnum , clist = ck.checknum(randnum + y)
    all_list.append(cnum)
 
print len(all_list)
for z in range(10):
   print z, all_list.count(z)

結果自体は昨日と同じようだ。
しかし、番号が一つしか違わない10の番号 の寄せ集め1000(合計1万)個のうち、 「検査用数字」の0が1800以上も出ているから 衝突している可能性が高いとは言える、かも。

$ python num_conf.py 
10000
0 1856
1 951
2 898
3 911
4 902
5 876
6 935
7 871
8 935
9 865

リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。

index.htmlは ここから。