首页技术js随机数组,js生成指定范围的随机数

js随机数组,js生成指定范围的随机数

编程之家2026-06-06689次浏览

大家好,今天小编来为大家解答js随机数组这个问题,js生成指定范围的随机数很多人还不知道,现在让我们一起来看看吧!

js随机数组,js生成指定范围的随机数

js有哪几种典型函数

第一类:常规函数

包括以下9个函数:

(1)alert函数:显示一个警告对话框,包括一个OK按钮。

(2)confirm函数:显示一个确认对话框,包括OK、Cancel按钮。

(3)escape函数:将字符转换成Unicode码。

(4)eval函数:计算表达式的结果。

js随机数组,js生成指定范围的随机数

(5)isNaN函数:测试是(true)否(false)不是一个数字。

(6)parseFloat函数:将字符串转换成符点数字形式。

(7)parseInt函数:将符串转换成整数数字形式(可指定几进制)。

(8)prompt函数:显示一个输入对话框,提示等待用户输入。

第二类:数组函数

包括以下4个函数:

js随机数组,js生成指定范围的随机数

(1)join函数:转换并连接数组中的所有元素为一个字符串。

(2)langth函数:返回数组的长度。

(3)reverse函数:将数组元素顺序颠倒。

(4)sort函数:将数组元素重新排序。

第三类:日期函数

包括以下20个函数:

(1)getDate函数:返回日期的“日”部分,值为1~31

(2)getDay函数:返回星期几,值为0~6,其中0表示星期日,1表示星期一,...,6表示星期六

(3)getHours函数:返回日期的“小时”部分,值为0~23。

(4)getMinutes函数:返回日期的“分钟”部分,值为0~59。见上例。

(5)getMonth函数:返回日期的“月”部分,值为0~11。其中0表示1月,2表示3月,...,11表示12月。见前面的例子。

(6)getSeconds函数:返回日期的“秒”部分,值为0~59。见前面的例子。

(7)getTime函数:返回系统时间。

(8)getTimezoneOffset函数:返回此地区的时差(当地时间与GMT格林威治标准时间的地区时差),单位为分钟。

(9)getYear函数:返回日期的“年”部分。返回值以1900年为基数,例如1999年为99。

(10)parse函数:返回从1970年1月1日零时整算起的毫秒数(当地时间)。

(11)setDate函数:设定日期的“日”部分,值为0~31。

(12)setHours函数:设定日期的“小时”部分,值为0~23。

(13)setMinutes函数:设定日期的“分钟”部分,值为0~59。

(14)setMonth函数:设定日期的“月”部分,值为0~11。其中0表示1月,...,11表示12月。

(15)setSeconds函数:设定日期的“秒”部分,值为0~59。

(16)setTime函数:设定时间。时间数值为1970年1月1日零时整算起的毫秒数。

(17)setYear函数:设定日期的“年”部分。

(18)toGMTString函数:转换日期成为字符串,为GMT格林威治标准时间。

(19)setLocaleString函数:转换日期成为字符串,为当地时间。

(20)UTC函数:返回从1970年1月1日零时整算起的毫秒数,以GMT格林威治标准时间计算。

第四类:数学函数

函数有以下18个:

(1)abs函数:即Math.abs(以下同),返回一个数字的绝对值。

(2)acos函数:返回一个数字的反余弦值,结果为0~π弧度(radians)。

(3)asin函数:返回一个数字的反正弦值,结果为-π/2~π/2弧度。

(4)atan函数:返回一个数字的反正切值,结果为-π/2~π/2弧度。

(5)atan2函数:返回一个坐标的极坐标角度值。

(6)ceil函数:返回一个数字的最小整数值(大于或等于)。

(7)cos函数:返回一个数字的余弦值,结果为-1~1。

(8)exp函数:返回e(自然对数)的乘方值。

(9)floor函数:返回一个数字的最大整数值(小于或等于)。

(10)log函数:自然对数函数,返回一个数字的自然对数(e)值。

(11)max函数:返回两个数的最大值。

(12)min函数:返回两个数的最小值。

(13)pow函数:返回一个数字的乘方值。

(14)random函数:返回一个0~1的随机数值。

(15)round函数:返回一个数字的四舍五入值,类型是整数。

(16)sin函数:返回一个数字的正弦值,结果为-1~1。

(17)sqrt函数:返回一个数字的平方根值。

(18)tan函数:返回一个数字的正切值。

第五类:字符串函数

包括以下20个函数:

(1)anchor函数:产生一个链接点(anchor)以作超级链接用。anchor函数设定<A NAME...>的链接点的名称,另一个函数link设定<A HREF=...>的URL地址。

(2)big函数:将字体加到一号,与<BIG>...</BIG>标签结果相同。

(3)blink函数:使字符串闪烁,与<BLINK>...</BLINK>标签结果相同。

(4)bold函数:使字体加粗,与<B>...</B>标签结果相同。

(5)charAt函数:返回字符串中指定的某个字符。

(6)fixed函数:将字体设定为固定宽度字体,与<TT>...</TT>标签结果相同。

(7)fontcolor函数:设定字体颜色,与<FONT COLOR=color>标签结果相同。

(8)fontsize函数:设定字体大小,与<FONT SIZE=n>标签结果相同。

(9)indexOf函数:返回字符串中第一个查找到的下标index,从左边开始查找。

(10)italics函数:使字体成为斜体字,与<I>...</I>标签结果相同。

(11)lastIndexOf函数:返回字符串中第一个查找到的下标index,从右边开始查找。

(12)length函数:返回字符串的长度。(不用带括号)

(13)link函数:产生一个超级链接,相当于设定<A HREF=...>的URL地址。

(14)small函数:将字体减小一号,与<SMALL>...</SMALL>标签结果相同。

(15)strike函数:在文本的中间加一条横线,与<STRIKE>...</STRIKE>标签结果相同。

(16)sub函数:显示字符串为下标字(subscript)。

(17)substring函数:返回字符串中指定的几个字符。

(18)sup函数:显示字符串为上标字(superscript)。

(19)toLowerCase函数:将字符串转换为小写。

(20)toUpperCase函数:将字符串转换为大写。

js实现双色球效果

JS实现双色球效果的核心原理是通过随机数生成不重复的号码组合,以下是具体实现逻辑的详细说明:

初始化号码池

红球号码范围为1-33,通过循环生成数组arrS存储这些数字

蓝球号码范围为1-16,在随机生成时单独处理

随机数生成机制

使用Math.random()结合Math.floor()获取指定范围内的随机索引

关键函数getR(arr, al)从数组中随机抽取元素,al参数控制抽取范围

去重处理

采用ES6的Set数据结构确保号码不重复

红球需要6个不重复号码(while(set.size< 6))

蓝球只需1个号码(while(set1.size< 1))

结果显示

通过DOM操作获取页面中的<span>元素

红球用红色类名.a显示,蓝球用蓝色类名.b显示

生成的号码通过字符串拼接后赋值给元素的innerText

交互触发

按钮点击事件绑定onclick函数

每次点击都会重新生成完整的双色球组合

代码优化建议:

可添加号码排序功能(如Array.from(set).sort((a,b)=>a-b))建议增加异常处理(如数组越界检查)可考虑使用模板字符串优化号码拼接逻辑该实现完整展示了前端JavaScript操作DOM、随机数生成及集合类型的使用,适合作为基础随机抽奖功能的参考案例。

数组和链表

数组是一种基础的数据结构,数组是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。(但在 JavaScript里,它不是一组连续的内存空间,也可以在数组中保存不同类型的值。但我们还是要遵守佳实践,别这么做,大多数语言都没这个能力)。

名词解析:1、线性表:线性表就是数据排成一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。其实除了数组,链表、队列、栈等也是线性表结构。与它相对立的概念是非线性表,比如二叉树、堆、图。之所以叫非线性,是因为在非线性表中,数据之间不是简单的前后关系。

2、连续的内存空间和相同类型的数据。正是因为这两个限制,它才可以随机访问。但有利就有弊,这两个限制也让数组的很多操作变得非常低效,比如要想在数组中删除、插入一个数据,为了保证连续性,就需要做大量的数据搬移工作。

相比数组,链表是一种稍微复杂一点的数据结构。链表中的元素可存储在内存的任何地方(不像数组那样,需要连续的内存空间)。链表的每个元素都存储了下一个元素的地址,通过“指针”将一组零散的内存块串联起来使用,从而使一系列随机的内存地址串在一起。

几种常见的链表结构:单链表、双向链表和循环链表。

单链表中的节点应该具有两个属性:val和next

单链表

它包含两个域,一个信息域和一个指针域。这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值。

双向链表

每个节点有两个连接:一个指向前一个节点,(当此“连接”为第一个“连接”时,指向空值或者空列表);而另一个指向下一个节点,(当此“连接”为最后一个“连接”时,指向空值或者空列表)

循环链表

首节点和末节点被连接在一起

数组为了保持内存数据的连续性,会导致插入、删除这两个操作比较低效。

每次进行插入操作的时候,假如我们将一个数据插入数组的第 k个位置,为了把第 k个位空出来,就需要将 k以后的数据全部往后移动一位。所以平均时间复杂度为 O(n)。

同理,如果我们要删除第 k个位置的数据,为了内存的连续性,也需要搬移数据,不然中间就会出现空洞,内存就不连续了,所以平均时间复杂度也是 O(n)。

实际上,在某些特殊场景下,我们并不一定非得追求数组中数据的连续性。如果我们将多次删除操作集中在一起执行,删除的效率是不是会提高很多呢?我们继续来看例子。数组 a[10]中存储了8个元素:a,b,c,d,e,f,g,h。现在,我们要依次删除a,b,c三个元素。

为了避免 d,e,f,g,h这几个数据会被搬移三次,可以先记录下已经删除的数据。每次的删除操作并不是真正地搬移数据,只是记录数据已经被删除。当数组没有更多空间存储数据时,我们再触发执行一次真正的删除操作,这样就大大减少了删除操作导致的数据搬移。

如果在实际情况中删除和插入操作比较多,为了改善删除和插入的时间复杂度,我们就可以使用链表。

链表在进行插入或删除操作的时候,我们并不需要为了保持内存的连续性而搬移结点,因为链表的存储空间本身就不是连续的。所以,在链表中插入和删除一个数据是非常快速的。

但是链表要想随机访问第 k个元素,就没有数组那么高效了。因为链表中的数据并非连续存储的,所以无法像数组那样,根据首地址和下标,通过寻址公式就能直接计算出对应的内存地址,而是需要根据指针一个结点一个结点地依次遍历,直到找到相应的结点,所以时间复杂度为 O(n)。

总结:链表适合插入、删除,时间复杂度 O(1);数组支持随机访问,根据下标随机访问的时间复杂度为O(1)。

1、链表和数组不同,数组需要一块连续的内存空间,而链表并不需要连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用。

注意:在JavaScript中数组是一种类列表对象,它的原型中提供了遍历和修改元素的相关操作。JavaScript数组的长度和元素类型都是非固定的。因为数组的长度可随时改变,并且其数据在内存中也可以不连续,所以 JavaScript数组不一定是密集型的,这取决于它的使用方式。在 JS中数组通过哈希映射或者字典的方式来实现,所以不是连续的。一般来说,数组的这些特性会给使用带来方便,但如果这些特性不适用于你的特定使用场景的话,可以考虑使用类型数组。这里我们讨论的不是JavaScript中的数组。

2、数组的元素都在一起;链表的元素是分开的,其中每个元素都存储了下一个元素的地址。

3、数组的读取速度很快;链表的插入和删除速度很快。

总结:如果你需要经常添加或删除结点,链表可能是一个不错的选择。

如果你需要经常按索引访问元素,数组可能是比链表更好的选择。

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

英雄联盟拉莫斯(英雄联盟阿泽尔)css样式的分类?css排版样式的分类及其特点