2016-08-22 4 views
-1

私は機械学習の実験に取り組んでいると私はこれを行い、高速機能を把握しようとしている:2つの整数をバイナリの配列に変換していますか?

それは0-99の間に2つの整数を取り、バイナリの配列をretruns:

var binaries = convert(12, 33); 
console.log(binaries) //outputs [0,1,0,1,1,0] 

var 1 = [0,1,1,1,1,0] // 5 matches 
var 2 = [0,0,0,0,0,0] // 3 matches, 1 wins! 

最初の値はでFEADされ、他方はランダムのように理想的なAである1つを見つけるために変更される。

binariesは、それが最良のマッチングだ魔女を参照するために、2つの他のバイナリファイルと比較されます可能です。理想的な意味は、入力に基づいて、可能な限り頻繁に1と2のうちの正しいものを選択する出力を作成することを意味します。生成される配列の長さは不明です。どのように変換する必要がありますか?

+0

あなたはこの質問を少し混乱させたいと思うかもしれません、 'convert'メソッドから連結されたバイナリ値を返そうとしていますか? –

答えて

0

可能な解決策は、次のようになります。

var arrToTest = [1,1,1]; 
function intToBinaryArray(num){ 
    var binary = num.toString(2); 
    var arr = []; 
    for (var i=0; i<binary.length; i++){ 
     arr[i] = parseInt(binary.charAt(i)); 
    } 
    return arr; 
} 
function binaryComparison(a,b){ 
    var result = 0; 
    a.forEach(function(r,i){ 
     if(r === b[i]){ 
      result++; 
     } 
    }) 
    return result; 
} 
console.log(
    binaryComparison(arrToTest,intToBinaryArray(7)) + ' out of ' + 
    arrToTest.length + ' matched.' 
); 

あなたは、あなたがそれらをループそして、あなたが望むように対してテストするなど、多くの配列をすることができます追加することができます。 binaryComparisonのhighes値を持つものが最もよく一致します。

編集: 私は部分比較部分を見逃しましたが、私はそれを一瞬で追加します。

EDIT2: 比較部分を追加しました。

+0

thx、私は主にintToBinaryArrayに興味があった、それは2つの値を取る必要があり、私は本当にarr [i] = parseInt(binary.charAt(i)); ...しかし、それは有望に見えます! – Himmators

+0

'num.toString(2)'を使うと、バイナリは "001"のような文字列として表示されます。なぜなら、整数を持つ配列が必要なのです。それぞれの文字をループし、 'parseInt'で整数に変換し、それは 'arr [i] ='で配列に渡されます。 –

関連する問題