2010-11-25 13 views
0

私のガールフレンドと彼女の姉妹は、このiPhoneアプリで遊んでいたので、2つの名前を入力でき、%互換性の一致が返されます。私はあまりにも(恥ずべき)それで遊んで始め、それがどのように働いたのか把握しようとしていました。 「John Doe」や「John Doe」などの2つの正確な文字列を比較すると、ややランダムな互換性が返されますが、毎回同じ互換性が返されます。それは本当に「ランダム」ではありませんでした。JavaScriptの互換性テスター(文字列比較機能)

私はJavaScriptで同じことをする関数をどのように得ることができるか、誰か考えていますか?シェルの機能は次のとおりです。

function getCompatibility(name1, name2) { 
    // Lower case name1 and name2 and remove spaces 
    name1 = name1.replace(' ', '').toLowerCase(); 
    name2 = name2.replace(' ', '').toLowerCase(); 

    // Do some type of comparison to get a value between 0 and 100 back 
    // HELP ME HERE =] 
} 

getCompatibility('John Doe', 'John Doe'); // outputs 60% (or something) 
getCompatibility('John Doe', 'John Doe'); // outputs 60% (same as above) 
getCompatibility('John Resig', 'Angelina Jolie'); // outputs 90% (or something) 

答えて

2

文字列に基づいて数値を計算し(たとえば、各文字のASCII値を加算して)、それを乱数ジェネレータに渡すことができます。こうすることで、文字列が変更されないときも同じ結果が出力されます。

編集:これはjavascriptで行うため、this questionをチェックしてください。

+0

乱数生成器にそれをシードするプロセスを説明できますか? –

+0

擬似乱数ジェネレータはいくつかの決定論的な方法で動作し、しばしば "シード"関数があります(phpでは[srand](http://php.net/manual/en/function.srand.php))そのため、特定の番号をそれに付けると、それ以降の生成される「ランダム」番号の順序は常に同じになります。 JSはこれを持っていないので、擬似乱数ジェネレータの1つを実際に実装することになります。 – cambraca

+0

疑似乱数ジェネレータの実際の詳細についてはあまりよく分かりませんが、コピー&ペーストできる既製の関数があります。 – cambraca

0

本当に面白いとは思いません。私はToby Segaranの「Programming Collective Intelligence」第9章「高度な分類:カーネルメソッドとSVM」のようなものを好むでしょう。マッチメーカーのデータベースを使用して、さまざまな特性でそれを行う方法を示します。私はこれがずっと面白いと思う。

あなたが推薦しているのは、乱数ジェネレータによって生成された連想配列のパーセンテージを調べることです。