答え1
基本方程式によると:
#!/usr/bin/python
import sys
k = float(sys.argv[1])
s = float(sys.argv[2])
N = int(sys.argv[3])
def zipf(k, s, N):
return (1/k**s) / sum(1/n**s for n in range(1, N+1))
print zipf(k, s, N)
言語に組み込まれている基本ルーチンのみを使用してください。ほとんどすべての他の言語に変換できますperl
。ruby
バージョンは次のとおりですawk
。
#!/bin/awk -f
BEGIN {
for (n=1; n<=N; n++) {
den=den+1/n^s;
}
print (1/(k^s))/den;
}
スクリプトawk
には入力ファイルは必要ありませんが、コマンドラインから変数を割り当てる必要があります。
$ /tmp/zipf.awk -vk=10 -vs=4 -vN=10
9.24183e-05
答え2
Pythonではありませんか?外部変数の分布、正しいラムダ値を使用してください。わかりますか?