将两个整数转换为二进制数组?

时间:2016-08-22 09:48:40

标签: javascript

我正在进行机器学习实验,而我正试图找出一个快速执行此功能的功能:

在0-99之间需要两个整数并重新构造二进制数组:

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

binaries与其他两个二进制文件进行比较,看看它是否匹配得最好:

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

第一个值将是fead in,另一个将随机更改,以便找到尽可能理想的值。理想意味着基于输入它将创建一个输出,尽可能经常从1和2中选择正确的输出。生成的数组的长度未知。如何转换工作?

1 个答案:

答案 0 :(得分: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的高值的那个将具有最佳匹配。

修改 我错过了部分比较部分,我稍后会补充一下。

<强> EDIT2: 添加了比较部分。