提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 任务说明
  • 一、任务要求
  • 二、代码
    • 1.关键代码
    • 2.整体代码
  • 总结

任务说明

js抽奖事件——生成不同概率随机数。
5支球队[A, B, C, D, E]参加状元抽签,编写程序实现A抽中状元签概率为25%,B抽中1号签概率20%,C抽中1号签概率15%,D抽中1号签概率10%,E抽中1号签概率5%。


一、任务要求

  1. 用js对象配置每个球队抽中状元签的概率
  2. 测试抽签很多次,输出球队抽中状元签的次数,检查是否和概率对应

二、代码

1.关键代码

共有A,B,C,D,E五个事件,其发生的概率为A-0.25,B-0.2, C-0.15, D-0.1,E-0.05;
首先我们要构造一个大区间(0,0。75),这个大区间的上限为五个事件发生的概率之和0.75,把大区间化为5个长度不等的小区间(多少个事件就多少个小区间),每个小区间的跨度对应各个事件的发生概率,A(0,0.25),B(0.25,0.45),C(0.45,0.6),D(0.6,0.7),E(0.7,0.75)。最后在大区间(0,0.75)中生成一个等概率随机数x,x落在哪个小区间内,就说明那个事件发生了。

function prize()
{// 概率总和,即大区间的上限var m=0.25+0.20+0.15+0.10+0.05;// console.log(m);var sum=0; // 每次循环产生的随机数var num=0;// 返回的对象的keyvar k;// 生成概率随机数num=Math.random()*m;// console.log(num);for(var z in obj){// sum每次增长的长度为各个小区间的跨度,即事件的概率sum=sum+(obj[z]);// console.log(sum);// 如果sum大于等于num说明x落在了i事件内。if(sum>=num){k=z;//return 直接结束循环return k;//    console.log(k);}}
}

2.整体代码

代码如下:
html

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>不同概率随机数</title>
</head>
<script src="./js/getNum.js"></script>
<!-- <script src="./js/Myfunction.js"></script> -->
<body><div style="text-align: center;"><button onclick="Myfunction()">点击抽奖10000次</button></div><script src="./js/Myfunction.js"></script><section><div style="text-align: center;font-size:20px;">A出现了<span></span>次</div><div style="text-align: center;font-size:20px;">B出现了<span></span>次</div><div style="text-align: center;font-size:20px;">C出现了<span></span>次</div><div style="text-align: center;font-size:20px;">D出现了<span></span>次</div><div style="text-align: center;font-size:20px;">E出现了<span></span>次</div></section>
</body>
</html>

js

function rand(min,max){n=Math.floor(Math.random()*(max-min))+min;return n;
}var obj={A:0.25,B:0.20,C:0.15,D:0.10,E:0.05}function Myfunction() {console.log("点击了!")var arr=[0,0,0,0,0]for(var j=0;j<10000;j++){var key=prize();for(var i in obj){// console.log(i);if(key==i){if(i=='A'){arr[0]=arr[0]+1;}else if(i=='B'){arr[1]=arr[1]+1;}else if(i=='C'){arr[2]=arr[2]+1;}else if(i=='D'){arr[3]=arr[3]+1;}else if(i=='E'){arr[4]=arr[4]+1;}}}}
var s = document.getElementsByTagName('span');
s[0].innerText = arr[0];
s[1].innerText = arr[1];
s[2].innerText = arr[2];
s[3].innerText = arr[3];
s[4].innerText = arr[4];}function prize()
{// 概率总和,即大区间的上限var m=0.25+0.20+0.15+0.10+0.05;// console.log(m);var sum=0; // 每次循环产生的随机数var num=0;// 返回的对象的keyvar k;// console.log(obj);// for(var i in obj){//     sum=sum+obj[i];// }// 生成概率随机数num=Math.random()*m;// console.log(num);for(var z in obj){// sum每次增长的长度为各个小区间的跨度,即事件的概率sum=sum+(obj[z]);// console.log(sum);// 如果sum大于等于num说明x落在了i事件内。if(sum>=num){k=z;//return 直接结束循环return k;}}}

总结

以上就是今天要讲的内容,本文介绍了怎样随机生成不同概率事件。

js抽奖事件——生成不同概率随机数相关推荐

  1. 用人脑生成等概率随机数,困扰人类30万年的问题解决了 | 附“源代码”

    晓查 发自 凹非寺 量子位 出品 | 公众号 QbitAI 让人类随机说出一个1-10之间的整数(包括1和10),每个数字被选中的概率都是10%吗?答案当然是否定的. 半年前,有人对8500名学生做了 ...

  2. python 生成指定概率的随机数

    生成指定概率的随机数 需求 解决方法 需求 遇到一些情况需要指定概率的条件下生成随机数,比如要生成姓名字符串,随机生成的话一般是两个字的姓名和3个字的姓名概率是一样的,而实际应该是大部分偏向三个字的, ...

  3. 一随机数以概率 p 生成0,以概率(1-p)生成1,怎样生成等概率的 0 和 1

    这涉及到概率 分布的内容了,其实也简单只要能找到一个概率为1/2p的函数就解决了. 另外还有一个比较方便的实现:  一随机数f(x)以概率 p 生成0,  那么设g(x)=f(x)>0?0:1; ...

  4. matlab逆变换法产生随机数_信号处理——生成给定分布随机数

    作者:桂. 时间:2017-03-12  19:31:55 前言 本文是曲线拟合与分布拟合一文的插曲,进行分布拟合时,碰到一个问题是,如何指定分布的随机数呢?本文主要包括: 1)连续型随机数: 2)离 ...

  5. 使用SQL生成非均匀随机数

    参考: http://www.cnblogs.com/CareySon/archive/2012/07/11/GenerateNURNsUsingSQLServer.html 正如"随机数的 ...

  6. 后处理程序文件大小的变量_【每日一题】(17题)面试官问:JS中事件流,事件处理程序,事件对象的理解?...

    关注「松宝写代码」,精选好文,每日一题 作者:saucxs | songEagle 2020,实「鼠」不易 2021,「牛」转乾坤 风劲潮涌当扬帆,任重道远须奋蹄! 一.前言 2020.12.23 立 ...

  7. 【原创】开源Math.NET基础数学类库使用(14)C#生成安全的随机数

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  8. captcha.js一个生成验证码的插件,使用js和canvas生成

    一.captcha`captcha.js`是一个生成验证码的插件,使用js和canvas生成的,确保后端服务被暴力攻击,简单判断人机以及系统的安全性,体积小,功能多,支持配置. 验证码插件内容,包含1 ...

  9. rand生成随机数的范围_JS中生成指定范围随机数

    在日常工作中,我们经常会需要生成一些随机数,相信大家最熟悉的就是 Math.random() 这个api,本文将介绍生成指定范围随机数的方法. 首先我们复习一下这几个api,后面会用到: 1.Math ...

最新文章

  1. 一打在2019年亮相的迷人科技项目:飞行汽车、子弹头列车、登月、……
  2. hdu 1496 Equations(技巧hash)
  3. lable标签的妙用
  4. 10个机器学习人工智能开发框架和AI库(优缺点对比表)/贪心学院
  5. Java调用WeChat's API总结
  6. oracle怎么不让别的电脑连接,[转载]修改计算机名字导致oracle连接不上的解决方案...
  7. UVA10624 Super Number【DFS】
  8. java合同到期提醒_合同到期提醒,你会操作吗?
  9. activiti6中activiti-app教程
  10. [含论文+源码等]基于java+ssh+mysql实现的共享自行车租赁|出租管理系统
  11. Pytorch——Conv2d、conv2d
  12. 气象大数据与预报准确率
  13. 【国产替代】推动安全芯片产业国产化,华秋电子与华翼微达成合作!
  14. xms和xmx为什么要相同_为什么结婚蚕丝被,一定要有双宫茧子母被?
  15. 微信支付分(四)--取消支付分订单
  16. JSP, Servlet常见面试题详解
  17. KaTeX 数学符号列表
  18. 关于钢材出口关税的问题
  19. 【IIS音频传输】1、认识IIS
  20. 自己动手开发翻译软件(Java版)

热门文章

  1. Manjaro 更新后,解决搜狗输入法异常!请删除.config/SogouPY 并重启
  2. 如何在KWSP网站上申请在线EPF帐户(i帐户)–第1部分
  3. python计算存款复利计算器_GitHub - dxcv/Options-Calculator: 期权价格计算器——金融工程第二次展示...
  4. 【java】家庭收支管理系统
  5. 05-使用Redis缓存数据,管理员相关数据表
  6. RSA PKCS1(google play receipt 验证)
  7. Microsoft Store无法打开的解决办法【成功解决】
  8. Hyperion与Tagetik的产品使用比较
  9. TCPMP之Interface篇
  10. IMD/IMT/IME/OMD/OMF等工艺了解