前端web—每日一练(6.21)--双色球案例--随机数

本文介绍如何使用JavaScript生成不重复的双色球彩票,包括利用数组和Math对象生成随机数,去除红球重复,以及对选号进行排序。通过set数据结构实现红球的去重,并展示了使用Math和数组API完成整个彩票生成过程。
摘要由CSDN通过智能技术生成

题目描述:

双色球彩票由红球(33)和蓝球(16)组成,一注彩票有7个数组成(红球6个,蓝球1个)
写一个方法,随机产生1注双色球彩票(不能重复),并对号码排序。


主要知识点

Math对象

abs()  获取绝对值
ceil()  向上取证
floor()  向下取整
round()  四舍五入取整
pow(x,y)   计算x的y次方,可以使用  x**y
max()  获取一组数字最大值
min()  获取一组数字最小值

数组API

reverse()  翻转数组元素
sort()   对数组进行排序,默认是按照首个字符的编码排序
concat()  拼接多个数组,返回一个新数组
slice(start, end)  截取数组元素,start开始的下标,end结束的下标,不包含end本身;end为空截取都最后;下标为负数表示倒数;返回截取到的元素
splice(start, count, v1,v2..)  删除数组元素,start开始的下标,count删除的数量,count为空表示删除到最后,下标为负数表示倒数,v1,v2表示删除后补充的元素;返回删除的元素,原数组会发生变化
push()   在数组末尾添加元素,返回数组长度,原数组会发生变化
pop()  删除数组末尾的一个元素,返回删除的元素,原数组会发生变化
unshift()  在数组开头添加元素,返回数组长度,原数组会发生变化
shift()  删除数组开头的一个元素,返回删除的元素,原数组会发生变化
indexOf()   用于查找数组中是否含有某个元素,返回满足条件的第一个的下标,如果找不到返回-1

进阶set对象

set数据结构类似数组,但所有成员的值唯一
set本身是一个构造函数,用来生产Set数据结构,使用add方法来添加新成员
let set = new Set
操作方法
add(value):添加某个值,返回 Set 结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。

…展开语法

展开字符串
let str = "abc"
console.log(... str)// a b c
展开数组
let arr = [1,2,3]
console.log(...arr)// 1 2 3
展开数组
let kk = {
	name : 'keke',
	age: 12
}
console.log({...kk})//{name:'keke',age:12}

题目解答:

一般写法(删除数组元素去重)

//声明变量保存1~33之间所有数字
var arr = [];
for (var i = 1; i <= 33; i++) {
  //i代表所有整数
  //添加到数组arr中
  arr.push(i);
}
console.log(arr);
//准备一个空数组,用于保存取到随机元素
var arr2 = [];
//循环6次,随机取6个数字
for (var i = 0; i < 6; i++) {
  //随机下标 0~32
  //0~1 * 33   0~32.x  向下取整  0~32
  var n = parseInt(Math.random() * arr.length);
  //console.log(n);
  //通过随机下标找到对应的元素 arr[n]
  //把找到的元素放入到准备好的新数组arr2中
  arr2.push(arr[n]);
  //每次获取到随机元素后,把该元素从数组中删除
  //splice(开始的下标,删除的数量)
  arr.splice(n, 1);
  console.log(arr.splice(n, 1));
}

//对获取到的随机进行从小到大的排序
arr2.sort(function (a, b) {
  return a - b;
});
//1~16之间随机取1个数字
//只需要产生一个随机整数,然后添加到数组arr2
//0~1  * 17  0~16.x  向上取整
//0~1  * 16  0~15.x  向下取整  0~15  + 1  1~16
var blue = parseInt(Math.random() * 16) + 1;
arr2.push(blue);
console.log(arr2);

使用set去重

//去红色球的时候需要去重,蓝色球不需要
//构造一个set数组
var arr = new Set();
while (arr.size < 6) {
	//floor向下取整
	//ceil 向上取整
  let num = Math.floor(Math.random() * 33);
  arr.add(num);
}
console.log(...arr);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值