发表于: 2017-03-27 16:13:38

3 1225


今天完成的事情

今天完成了任务2,任务2的主要内容是从input里获得数据,然后根据数据来改变杀手和平民的数量,然后利用数组乱序来随机生成杀手的位置,最后把每个人的身份输出

明天计划的事情

如果任务2通过审核,明天开始学习任务3

遇到的问题

今天在看师兄代码的时候发现师兄在上一个function里用的变量下一个function里也能调用,而我自己的代码却不行,在网上找了很久终于明白,要在不同的function中调用同一个变量的话,要么这个变量是全局变量,要么要用return,而我在第一个function里声明的变量当然不能在别的function里调用

在生成杀手位置的时候,师兄用的是随机数的方法,我觉得还是麻烦了些,所以我用了洗牌算法,因为已经知道一共有多少人和多少个杀手,按顺序排列后重新打乱,就可以得到杀手随机位置的目的,乱序的方法有很多种,我只学会了其中两种。

任务要求里有正则表达式,我目前还不知道这是个什么东西,粗略的看了一下觉得很复杂,在任务过程中似乎没有使用的必要性,所以跳过了,以后再研究吧。

收获

洗牌算法

将倒数第一个对象和随机对象调换

然后将倒数第二个对象和随机对象调换

以此类推直到第一个对象也被调换达到洗牌目的

function shuffle(aArr){
    var iLength = aArr.length,
        i = iLength,
        mTemp,
        iRandom;
 
    while(i--){
        if(i !== (iRandom = Math.floor(Math.random() * iLength))){
            mTemp = aArr[i];
            aArr[i] = aArr[iRandom];
            aArr[iRandom] = mTemp;
        }
    }
 
    return aArr;
}



返回列表 返回列表
评论

    分享到