生成随机数
数字0-9 ,
英文小写字母a-z ,
英文大写字母A-Z ,
长度
这是个完整的网页,可以直接打开看效果。下面是一些解释说明:
1,这里用了数组来储存数字与字母,一是为了简单直观,二是为了可扩展性。可以将它扩展为部门人员、学生之类,还能区别部门与班级进行抽签,只要替换其中的元素即可。
2,大部分的内容都有注释了我觉得不用再多讲,最后讲一下不重复随机数那里,我没有用递归,主要是我本身不太熟悉(野路子),所以自己想了个抽签取签删签的方法,反正我自己能理解就好了,以下解释给大家,如果大家觉得好理解那就用,如果觉得还是递归方便好理解那就改为递归。
讲解:
ary这个数组就是最终要抽签的数组,它是固定不变的,所有参与抽签的元素及它对应的下标也不会变,假设ary=["a","b","c","d","e"],a的下标就永远是0。
然后我根据ary这个数组的长度创建了一个NRary数组,这个数组长度与ary长度相同,数组内容就是签的序号,接上面ary的假设,那NRary=["0","1","2","3","4"]
开始抽签,Math.floor(Math.random()*NRary.length),Math.random()生成[0,1)之间的随机数,与NRary.length=5相乘后得到[0,5)的随机数,Math.floor向下取整,得到o1这个签
取签,假设o1=1,那NRary[o1]=1,则ary[NRary[o1]]=b,这个能理解吧。
删签,NRary.splice(o1,1)就是把NRary[o1]删除了,如上假设,现在NRary=["0","2","3","4"],注意,"1"没了。
再抽签,变化的是NRary.length=4,最后生成了[0,4)的随机数
再取签,假设o1=1,此时NRary[o1]=2。因为NRary已经产生了变化,它的"1"没了。所以它不可能取到重复的值。
再删签,NRary.length又变短了,抽过的签又没了,最后结果只有两个,一是生成的随机数足够了,还有签剩余,二是所有的签都被抽完了,至于是哪个结果,就看里面你输入了多少咯。
完。
就不开打赏了,有钱的捧钱场,没钱的捧人场。谢谢。