抽奖
const readline = require('readline-sync');
let nameStr = `余秋雨,文章,曾诚,高茂卜,孙建峰,唐明,黄宇,肖玉林,简帮炜,曾薪月,侯芹,田浩民,梁超栋,彭浩峰,李嘉林,房俊霖,马玉琨`;
// 封装随机函数
function random(n, m) {
if (!m) { // 防止用户只传一个参数,(不写这个,只传一个参数,会报错NaN)
[m, n] = [n, 0]
}
let i = parseInt(Math.random() * (m - n + 1) + n)
return i
}
// 将字符串通过 split 转化为 数组
let str = nameStr.split(',')
console.log(str);
//使用函数
Lottery()
//抽奖主函数
function Lottery() {
for (let i = 3; i > 0; i--) {
console.log(`请输入${i}等奖的名额`);
let opt = readline.question() - 0;
for (let j = 1; j <= opt; j++) { //想要几个人中奖
let index = random(str.length - 1); //下标随机数为-下标长度
console.log(`${i}得奖为:${str[index]}`);
str.splice(index, 1) //删除选中那个人
}
}
}
注意:
- 因为这里只抽三次奖,所以三次应该套在外面
- 中奖名额是我们定的,所以需要设置一个上限 j <= opt
- 最重要的是:通过 splice 删除,会影响原数组。这样可以避免出现重复的情况
双色球
/*
红球 6个 数字范围:1-33 不重复
蓝球 1个 数字范围:1-16
中奖规则:R + B 即 红球选中个数 搭配 蓝球号码。
一等奖:6+1 即:红球中6个,蓝球也中
一等奖:6+1 (钱(ni)太(zhong)多(bu)了,也封顶¥500万?)
二等奖:6+0 (封顶¥500万)
三等奖:5+1 (¥3000)
四等奖:5+0 | 4+1 (¥200)
五等奖:4+0 | 3+1 (¥10)
六等奖:2+1 | 1+1 | 0+1(¥5)
*/
const readline = require('readline-sync');
//封装随机函数
function random(n, m) {
if (!m) {
[m, n] = [n, 0]
}
let i = parseInt(Math.random() * (m - n + 1) + n)
return i; // 需要一个返回值
}
//双色球 随机数
function createNumber() {
//去重复
let s = new Set(); // 通过Set 创建的变量。里面的值都是唯一的。
//往里面添加值
while (s.size < 6) { // 可以设置 对象的长度
s.add(random(1, 33))
}
// 将对象转化为数组,并且排序
let redBalls = [...s].sort((a, b) => a - b);
console.log(redBalls);
let blueBall = random(1, 16)
console.log(blueBall);
//需要一个返回值
return [redBalls, blueBall] // 函数都需要返回值,否则没办法输出
}
//机选
let computer = createNumber()
console.log(computer);
//中奖号码
let blueBall = random(1, 16)
let [luckyredBalls, luckyblueBall] = createNumber()
console.log(luckyredBalls, luckyblueBall);
//红球相同的个数,也就是交集
// let conut = computer[0].filter(function(item){
// return luckyredBalls.indexOf(item)!=-1;
// }).length;
let conut = computer[0].filter((item) => luckyredBalls.indexOf(item) != -1).length
console.log(conut);