js抽奖算法

news/2024/12/26 18:15:44/文章来源:https://www.cnblogs.com/94pm/p/18587148

题目:设计一个js抽奖程序,一共分为三等奖,每一个等级的中奖概率及中奖人数都可自定义。

解法核心:

  • 设定概率

    • 一等奖概率:10%(即 0 - 0.1 的范围)
    • 二等奖概率:30%(即 0.1 - 0.4 的范围)
    • 三等奖概率:40%(即 0.4 - 0.8 的范围)
    • 剩余 20% 不中奖(即 0.8 - 1 的范围)
  • 生成随机数:使用 Math.random() 生成一个 [0, 1) 区间的随机数。

  • 根据随机数确定奖项:根据随机数值判断它落在哪个概率区间,决定抽中的奖项。

class Lottery {constructor(prizes) {this.prizes = prizes;  // 奖项的配置 {1: 1, 2: x, 3: y}this.results = {1: 0,  // 一等奖中奖人数2: 0,  // 二等奖中奖人数3: 0,  // 三等奖中奖人数none: 0 // 未中奖人数};}// 执行抽奖drawLottery() {// 生成 0 到 1 之间的随机数const random = Math.random();// 根据随机数的范围确定奖项if (random < 0.1 && this.results[1] < this.prizes[1]) {this.results[1]++; // 一等奖return '一等奖';} else if (random < 0.4 && this.results[2] < this.prizes[2]) {this.results[2]++; // 二等奖return '二等奖';} else if (random < 0.8 && this.results[3] < this.prizes[3]) {this.results[3]++; // 三等奖return '三等奖';} else {this.results.none++; // 未中奖return '未中奖';}}// 获取当前中奖情况getResults() {return this.results;}
}// 创建一个抽奖实例,其中一等奖1个,二等奖3个,三等奖5个
const lottery = new Lottery({1: 1, 2: 3, 3: 5});// 执行10次抽奖
for (let i = 0; i < 10; i++) {console.log(lottery.drawLottery());
}// 查看当前抽奖结果
console.log(lottery.getResults());

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/846834.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪心策略(未完结)

每次都试图解决问题的尽量大的一部分 如兑换硬币,先以最多数量的最大面值来迅速减少找零面值首先确定基本结束条件(最直接的情况——其面值正好等于某种硬币) 减小问题的规模 递归算法:#!/user/bin/env python3 # -*- coding: utf-8 -*- def recMC(coinValueList, change):…

电感的通低频阻高频特性的测试

用手持电桥测出电感的实际值,以保证在这个频率附近电感数值不会有太大变化 10k档     40k档   100k档 9.96mH    9.77mH   17.25mH 用示波器的信号发生器产生一个200k的信号,串接以上电感,查看输出波形当信号为200k时输出波形的峰峰值为1.55V(不接电感时为2.44…

whk1

选 \(B\)。

web19([GYCTF2020]Blacklist):

1.输入1回显出语法错误(找到注入点,是字符型) error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 1 at line 12.依次输入1 order by 3#、1 order by 1#、1 order by 2#…

linux,ssh连接

Linux,ssh远程连接 一、 linux端配置 1、安装ssh服务 sudo apt-get updatesudo apt-get install openssh-clientsudo apt-get install openssh-server2、启动ssh service ssh start3、检查是否成功启动ssh ps -e | grep ssh确保出现ssh-agent ,若无ssh-agent,执行下列代码 e…

【攻防技术系列】Rce漏洞数据不回显解决策略

一、数据带外1.1 DNSlog1.2 TCP-Portlog1.3 ICMP-Sizelog二、延迟判断三、写文件四、反弹权限4.1 反向连接4.2 正向连接免责声明 请勿使用本文中提到的技术进行非法测试或行为。使用本文中提供的信息或工具所造成的任何后果和损失由使用者自行承担,所产生的一切不良后果与文章…

Quantization

目录引线性量化 (Linear Quantization)对称量化非对称量化非线性量化Power-of-XRoundingDeterministic roundingStochastic rounding[1] 进击的程序猿-模型压缩-神经网络量化基础.[2] Przewlocka-Rus D., Sarwar S. S., Sumbul H. E., Li Y. and De Salvo B. Power-of-two quan…

H5-28 清除浮动

浮动元素会造成父元素高度塌陷后续元素也会受到影响 1、浮动的作用当元素设置fliat浮动后,该元素就会脱离文档流并向左/向右浮动①浮动元素会造成父元素高度塌陷②后续元素会受到影响 <div class="box"><div class="a"></div><div…

第58篇 Redis常用命令

1.基本操作2.字符串(Strings)3.列表()4.哈希(Hashes)5.位图(Bitmaps)6.位域(Bitfields)7.集合(Sets)8.有序集合(SortedSets)9.流(Streams)10。地理空间(Geospatial)11.HyperLogLog

位运算(未完成)

1、如果n & (n-1)=0,则n为2的幂 2、 题1:找出唯一成对的数 1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助存储空间,能否设计一个算法实现? 性质:AA=0,B0=B …

seleniumwire获取请求头参数

selenium-wire扩展了 Selenium 的 Python 绑定,让您可以访问浏览器发出的底层请求。 您编写代码的方式与使用 Selenium 的方式相同,但您可以获得额外的 API 来检查请求和响应并动态更改它们 一:简介 selenium是爬虫常用的手段之一,由于是使用浏览器驱动模拟手动操作,所以只…