发表于: 2021-04-23 20:56:30

1 2032


今天完成的事情:任务二的JS获取input标签value,看JS电子书
明天计划的事情:JS知识学习,任务二完成,

遇到的问题:JS正则表达式还没搞懂,存在的问题太多,还要加倍努力
收获:

用JS使多个input标签的联合,实现输出值的同:

获取多个input标签的DOM节点,我的用的ID选择器;

var btm = document.getElementById("btm");//选中DOM节点
var rangeNumber = document.getElementById("rangeNumber");//选中DOM节点

function getNumber(){//设定函数,使这两个input标签同步;
    if(btm.value>=4&&btm.value<=18){//标签的输出量
        btm.value=rangeNumber.value;//input标签的同步
    }

数组乱序:

数组乱序也称为洗牌问题;一个数组中的数将其打乱排列,且没有重复。


function shuffle(a) {

    var b = []; 

    while (a.length{//循环取a数组中的数

        var index = ~~(Math.random() * a.length);//生成随机数

        b.push(a[index]);//将随机数放到b数组中

        a.splice(index, 1);//将抽到的数值删掉

    } 

    return b;//返还数组

}

对于n个数进行随机打乱并排列:

首先当n=2的情况下,根据基本算法,有1/2的概率这两个数会互换位置,也有1/2的概率不会还位置,因此对于n=2的情况,满足随机取数并排列的要求;

倘若有 i 个数,i>=2时;符合随机性的要求,每个数出现在随机的位置上的概率为1/i ;

对于 i + 1个数时,每位数出现在随机位置或者交换到末尾上的概率为1/(i+1)。若取得的随机数没有交还到末尾,开始第二轮循环时,为 i 个数随机,依据上面的运算 i 出现在随机位置上的概率为1/i,所以每个数出现在 i 的前一位的概率为{ i/(i+1) * (1/i) } = 1/(i+1),也就是1/(i+1);


上面的结论:当任意数组数量,i >=2 , 每个数值放在任意位置的概率为1/i


返回列表 返回列表
评论

    分享到