js 实现微信红包算法

微信红包算法
5块钱生成五个红包,要注意的有
1、生成5个随机数
2、5个随机数加起来必须等于5
3、红包要设置最小值 如最小值不能小于0.01
4、红包要设置最大值,如果第一个红包为5,剩下四个红包没法分,这里设置最大值为4.9
5、处理金额的浮点数,两位小数

下面是代码

var RedPackage = function (money, num) {
//  Num 数量 arr 红包数组 all 红包总金额  money 剩余金额
      var money = money, Num = num, arr = [], all = money,num2=parseFloat(money/2).toFixed(2)
      for (var i = 1; i < Num; i++) {
        var n1 = parseFloat(Math.random() * money).toFixed(2)
        if (n1 < 0.01) { //处理最小值
          n1 = '0.01'
        }
        if (n1 > num2) {  //处理最大值
          n1 = num2
        }
        arr.push(n1)
        money = money - n1
        if (i == Num - 1) {
          let sum = 0;
          for (let i = 0; i < arr.length; i++) {
            sum += Number(arr[i])
          }
          last = parseFloat(all - sum).toFixed(2)
          arr.push(last)
        }
      }
      console.log(arr) // 红包的随机数
      console.log(eval(arr.join('+')))
    }

1、传入的值是金额和红包数量,
2、用一个循环依次生成红包,
3、生成第一个红包n1 为小于总金额的一个随机数,保留两位小数,最大值最小值判断
4、剩余金额money1为 红包总金额减去第一个红包金额n1
5、生成第二个红包n2为小于剩余金额money1的一个随机数,保留两位小数,最大值最小值判断
6、剩余金额money2为 红包总金额减去红包金额n1,n2
7、依次类推,当剩余最后一个红包是不需要再循环,最后一个红包的值为,总金额all减去其他红包之和。

写在最后,欢迎大家留言~~

智能网联汽车的安全员高级考试涉及多个方面的专业知识,包括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识解析: ### 关于智能网联车安全员高级考试的核心内容 #### 1. 自动驾驶分级标准 国际自动机工程师学会(SAE International)定义了六个级别的自动驾驶等级,从L0到L5[^1]。其中,L3及以上级别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值