推薦人による論客ポイントの計算方法の変更

総閲覧回数:3,963,545回 / ブログ拍手:2,585
作品DB等各サービスの機能追加情報や、技術系・面白系記事を中心に提供。
記事の投稿は基本Twitterでも告知させて頂いています。
連絡は作品DBの論客の方なら私書、DB外ユーザの方ならメールTwitterで可能です。
アクセス記録[推移 / PV内訳(過去1日 / 過去1週間) / 外部アクセス元 (昨日 / 過去1週間) / ログイン論客足跡]
プロフィール私書(メール)
   /   /送済
評価(一覧   /)
投票   /共:   /
ファン登録
作品/情報/
DB構築()
ブログ
[書く]
攻略記事リンク集
My Play List
<=次の記事 論客ポイントの構成表示とヘルプ改定&計算式変更
=>前の記事 重要!: 作品追加・更新作業に関する機能追加 + サイトマップ + α

1.
2007/01/16 作品DB開発/運用 > 推薦人による論客ポイントの計算方法の変更」
[この書込みのみ表示(記事URL紹介用) / 編集 / 削除 / トラバ送信 / 共有分類に追加(タグ付け)]

プログラムのソースに解説を付けてみることで説明させて頂きます。
今までは論客ポイントが掛け算効果で多人数になると増加幅が増える一方で爆発的な増加をしてしまうことへの対応として、増加幅に一定の制限をかけました(増加幅の上限が75000になるようにした)。
平たく言えば、ぷよぷよでの「ばよえ~ん」「ばよえ~ん」みたいな、連鎖がつながればつながる程増加幅が多くなる効果があるのですが、その増加幅に対して制約をかけたということです。

my %favorite=();
my $root_point=$ca->get('rec_range')+1; # 現在推薦可能人数は30人なので30+1=31になる
foreach my $lc_name (keys %recu) # 推薦人がいる方を1人1人計算 / ループ処理
{
foreach my $point (reverse sort @{$recu{$lc_name}}) # 高い値から処理 / ループ処理
{
my $favorite=$root_point-$point; # 現在の推薦可能人数上限30なら1位なら31-1=30ポイント / 1により近い方が高い値が出るように反転させている

my $e_lc_name=$c->escape($lc_name);

if(!(exists($favorite{$e_lc_name}))) # その人にとって推薦人1人目のポイント演算 / 種となる値を出す
{
$fcnt{$e_lc_name}=1;
$favorite{$e_lc_name}=100*$favorite; # 種となる値 / 1位として投票されていれば30 x 100=3000ポイントが種になる
next; # 1人目のポイント反映処理は終了/次の推薦人のポイント反映へ
}

# 推薦人2人目以降
my $plus=sprintf("%.0f", $favorite{$e_lc_name}*($favorite/$root_point)); # 掛け算なので累乗的な効果がある(多数の推薦を受けると上がるペースがアップしていく)

# 累乗的加算効果を制限する為、加算の上限が75000になるようにする
if($plus>75000)
{
$plus=75000;
}
$fcnt{$e_lc_name}++;
$favorite{$e_lc_name}=$favorite{$e_lc_name}+$plus; # 増加した推薦人ポイントの追加

# 例: 1人目が5位、2人目が10位、3人目が15位に投票していた時
# 2500+2500x20/31+((2500+2500x20/31)x15/31 = 2500+1613+1990=6103 point

}
}

ちなみに推薦人がいない人にはポイントの方は関係ありませんが、偏差値の方は上がっている人が多いのではないかと思われます。これは一部極端にポイントが増えた方のポイント/偏差値が、今回の変更である程度減った為、その分他の方が増える方向に反映されたのではないかと思われます。

本日はこの要素の変更の効果を見る為にこれだけしか変更していませんが、次の変更では同一作品に対する多重コメントへのポイント制約を加えることになると思います。

コメントする


[他の記事も読む]
<=次の記事 論客ポイントの構成表示とヘルプ改定&計算式変更
=>前の記事 重要!: 作品追加・更新作業に関する機能追加 + サイトマップ + α


大分類が「作品DB開発/運用」の記事
この論客の記事全て
↑上へ