发表于: 2017-04-18 20:27:26
3 1327
今天做了什么:完成了任务二。
明天要做什么:做任务三的过程中学习各种知识包括什么json。
今天遇到的问题:
1.parseInt(amounts)与amounts=parseInt(amounts)是有区别的。前面一种只是把变量传道函数里进行计算,后面才是把函数结果赋值给变量。
比较聪明的做法不知道。@蚊子注意一下这里,有什么好的办法?
3.数组啊,变量啊什么的最好不要跟函数取同一个名字,会出现各种不好改的问题。
4.对于http://www.cnblogs.com/idche/archive/2010/04/28/1722830.html 博主的洗牌算法的改进意见。
下面是这一种洗牌算法的主体内容:
var arr=[];
for(var i=0;i<100;i++){
arr[i]=i;
}
arr.sort(function(){ return 0.5 - Math.random() })
var str=arr.join();
alert(str);
上面比较简单就不必说了,下面变量str是为了让大家看清楚乱序后的状态,也不必过多注意,请把目光主要放在这里
arr.sort(function(){ return 0.5 - Math.random() })
sort()是一个用来排序的函数,如果不给他传入参数,那么他会将数组按照字母表顺序排序,如果想要用其他顺序排列,那么就要给他参数。其规则如下:
接下来用刚才的较大数字跟下一个进行比较。这样循环进行排序。
但是实际上,Math.random()的值域是[0,1),即其是一个左闭右开区间。那么当参数大于0的时候,即随机数区间在[0,0.5)的时候,不交换位置;而根据其原理,当参数等于0的时候,即随机数值为0.5的时候,两个数位置不变(即等同于不交换位置),所以实际上不交换位置的参数取值空间为
[0,0.5],相对应的,交换位置的取值空间为(0.5,1)。
下面笔者提出一点改进,将参数改写成Math.random()- 0.5,此时交换位置的参数取值为[0,0.5),不交换位置的参数取值空间为[0.5,1)。两种情况出现的概率相等(都为左闭右开区间,长度相等),所以会在很大程度上改善该博主的洗牌算法。
感悟: json什么鬼?正则什么鬼?都是什么鬼?任务三是谁发明的你出来(东北话来讲是你~除~赖~)!
我的快递被送到了菜鸟驿站,9点关门,早点交日报回家取快递去了。
评论