js抽奖事件——生成不同概率随机数

js生成不同概率随机数
摘要由CSDN通过智能技术生成

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

任务说明

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;
    // 返回的对象的key
    var 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=
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值