php计算一个模拟增长过程函数

private function calculateGrowth($progress) {// 使用多个增长阶段模拟不均匀性if ($progress < 0.3) {// 前30%时间:缓慢增长 30 %return pow($progress / 0.3, 0.7) * 0.3;} elseif ($progress < 0.7) {// 中间40%时间:快速增长 50%return 0.3 + (($progress - 0.3) / 0.4) * 0.5;} else {// 后30%时间:减速增长 20%return 0.8 + pow(($progress - 0.7) / 0.3, 1.5) * 0.2;}} 

函数的核心作用

接收一个 $progress(进度)参数(范围应该是 0 到 1 之间的数值),返回一个对应的"增长值"(同样是 0 到 1 之间)。通过分段计算,模拟现实中常见的"先慢、中快、后缓"的非线性增长过程。

三个增长阶段的详细解析

  1. 第一阶段:前30%进度(缓慢增长)

    if ($progress < 0.3) {return pow($progress / 0.3, 0.7) * 0.3;
    }
    
    • 适用范围:当进度小于 30%(0 ~ 0.3)时
    • 计算逻辑:
      • 先将进度归一化:$progress / 0.3(把 0~0.3 的范围映射到 0~1)
      • 用指数函数 pow(x, 0.7) 处理:因为指数 0.7 小于 1,会产生"增长越来越慢"的效果
      • 最后乘以 0.3:将结果限制在 0~0.3 范围内(占总增长的 30%)
    • 效果:前期增长缓慢,进度推进很多但实际增长值增加较少
  2. 第二阶段:中间40%进度(快速增长)

    elseif ($progress < 0.7) {return 0.3 + (($progress - 0.3) / 0.4) * 0.5;
    }
    
    • 适用范围:当进度在 30%~70%(0.3 ~ 0.7)时
    • 计算逻辑:
      • 基础值 0.3:承接第一阶段的终点
      • 归一化处理:($progress - 0.3) / 0.4(把 0.3~0.7 的范围映射到 0~1)
      • 线性增长:直接乘以 0.5(这部分贡献总增长的 50%)
    • 效果:这一阶段是线性增长,也是整个过程中增长最快的阶段(用 40% 的进度完成 50% 的增长)
  3. 第三阶段:后30%进度(减速增长)

    else {return 0.8 + pow(($progress - 0.7) / 0.3, 1.5) * 0.2;
    }
    
    • 适用范围:当进度在 70%~100%(0.7 ~ 1.0)时
    • 计算逻辑:
      • 基础值 0.8:承接前两阶段的总和(30% + 50%)
      • 归一化处理:($progress - 0.7) / 0.3(把 0.7~1.0 的范围映射到 0~1)
      • 用指数函数 pow(x, 1.5) 处理:因为指数 1.5 大于 1,会产生"先慢后快但整体增长减速"的效果
      • 最后乘以 0.2:将结果限制在 0~0.2 范围内(占总增长的 20%)
    • 效果:后期增长放缓,需要推进较多进度才能完成最后的增长

整体增长曲线特点

  • 总增长分配:30%(第一阶段) + 50%(第二阶段) + 20%(第三阶段) = 100%
  • 增长节奏:慢 → 快 → 慢,符合很多自然和人工过程的增长规律(如学习曲线、项目进度、产品 adoption 等)
  • 非线性特征:通过指数函数(0.7 和 1.5)实现了阶段内的非线性增长,比单纯的三段线性更贴近真实情况

这个函数可以用于模拟各种需要非线性增长的场景,如进度条动画、技能熟练度提升、任务完成度计算等。

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

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

相关文章

华为USG6000v2 NAT模式下IPSEC IKE V1 实验

USG6000v2 NAT模式下IPSEC 实验 拓扑图公网配置OSPF路由协议&#xff08;网络要求能通就行&#xff09; 一、 总部配置 &#xff08;一&#xff09;交换机配置 1、 总部交换机到防火墙网段 192.168.10.0/24 2、 交换机G0/0设置成access端口划分vlan 10&#xff0c;网关 192.168…

android 里设计context的作用

Android中的Context是一个核心设计机制&#xff0c;其作用主要体现在以下几个方面&#xff1a; 1. 提供应用程序环境信息 Context作为抽象类&#xff0c;封装了应用与系统交互所需的全局环境信息&#xff0c;包括资源访问、组件启动、系统服务调用等基础能力。它本质上是应用…

能发弹幕的简单视频网站

界面参考了Youtube&#xff0c;后端使用Spring Boot&#xff0c;前端Vue&#xff0c;vuetifyjs。支持自动生成封面图&#xff0c;发送弹幕、AI内容审核等功能。 一个简单的视频网站 网站名称是 TikTok 与 YouTube 的缝合&#xff0c;Logo 为豆包 AI 生成 主要界面参考了 Yout…

了解网站安全监测系统的重要性

在当今数字化时代&#xff0c;网站已经成为企业发展和品牌推广的关键渠道之一。然而&#xff0c;随之而来的是网络安全威胁的增加&#xff0c;包括数据泄露、恶意攻击和病毒感染等问题。为了保护网站和用户信息的安全&#xff0c;网站安全监测系统变得至关重要。1. 网站安全监测…

fastadmin安装后后台提示putenv()报错,不显示验证码

1.安装fastadmin后&#xff0c;访问项目后台&#xff0c;提示报错&#xff1a;Warning: putenv() has been disabled for security reasons in /www/wwwroot/app.aaa.cn/thinkphp/base.php on line 50 这时候验证码还不显示&#xff0c;怎么解决呢&#xff1f;2.打开php.ini文件…

C语言深度入门系列:第二篇 - 变量与数据类型:程序世界的基本粒子与容器

C语言深度入门系列&#xff1a;第二篇 - 变量与数据类型&#xff1a;程序世界的基本粒子与容器 本章目标 本章将深入探讨程序如何“记住”信息。你将彻底理解变量的本质是内存中的一块空间&#xff0c;数据类型是解释这块内存中0和1的规则。我们将超越简单的int, float用法&…

十一旅游中国气象攻略:如何评估降雨、大风与紫外线

一、十一期间的中国气候态要点(10 月上旬) 冷空气南下增多:华北—东北易大风降温;长江以南易出现冷暖空气交汇降雨。 台风未完全退场:华南沿海与海南、华东沿海仍可能受外围环流与风雨影响。 昼夜温差扩大:西北、华北、内陆盆地早晚凉,白天热,雾/霜风险抬头。 高原与…

鸿蒙项目篇-21-创建项目、修改软件文字/图标

目录 【预览】修改配置文件 module.json5 创建项目 初次-运行预览 拷贝图片 用于替换 【实操】修改配置文件 module.json5 点击,显示引用 ctrl + 点击,引用追踪 置顶模拟器 最终代码 总结 先规划再行动【高效】以终为始【不偏离方向/目标】 【预览】修改配置文件 m…

Linux服务器的系统安全强化超详细教程

Linux服务器几乎承担着最重要的计算和存储角色&#xff0c;它是企业网站、数据库、应用中间件、开发环境乃至云原生容器平台的核心。正因为Linux服务器的广泛应用&#xff0c;它也成为攻击者频繁锁定的目标。系统一旦被攻破&#xff0c;不仅业务会面临中断&#xff0c;更严重的…

计算机毕设 java 高校会议室预约管理系统 基于 SSM 框架的高校会议室管理平台 Java+MySQL 的预约全流程管控系统

计算机毕设java高校会议室预约管理系统z14559 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09;本套源码可以先看具体功能演示视频领取&#xff0c;文末有联xi 可分享在高校会议室资源紧张的背景下&#xff0c;传统预约依赖人工登记、信息传递滞后&#xff0c;存在预…

Redis的持久化机制RDB和AOF详解

本文为您介绍redis的持久化机制以及持久化的选型。 目录 持久化策略 RDB(RedisDatabase)快照 AOF(Append Only File) 混合持久化策略 RDB与AOF对比 持久化策略使用建议 Redis数据备份策略建议 补充知识 save与bgsave对比 bgsave的写时复制(COW)机制 持久化策略 Red…

Vue 3 实战:从零到一用 vue-pdf-embed 打造功能齐全的 PDF 查看器

你好&#xff0c;Vue 开发者们&#xff01; 在 Web 开发中&#xff0c;我们经常会遇到需要在页面中直接展示 PDF 文件的需求&#xff0c;例如预览合同、显示报告或在线阅读文档。你可能会想到用 <iframe> 或者一些重量级的库&#xff0c;但它们往往不够灵活或过于臃肿。…

adb的常用命令

adb devices 用USB数据线连接电脑&#xff0c;查看连接上的设备 adb tcpip 5555 切换计算机的adb为wifi连接模式 adb connect 192.168.2.250:5555 连接手机的ip地址&#xff0c;如果连接成功&#xff0c;则可拔掉数据线 adb 查看adb的相关信息&#xff0c;包括版本号&#xff0…

稳态太阳光模拟器 | 多源分布式设计的要点有哪些?

稳态太阳模拟器的多源分布式设计&#xff0c;是一种通过多组独立光源单元分布式排布、结合稳态光学调控技术&#xff0c;实现对太阳光谱、辐照强度及辐照均匀性精准复现的高端光模拟技术。其核心优势在于突破传统模拟光源在长期工作稳定性、大面积辐照均匀性及能量传递效率上的…

代码随想录 day 35 动态规划

第九章 动态规划part03 正式开始背包问题&#xff0c;背包问题还是挺难的&#xff0c;虽然大家可能看了很多背包问题模板代码&#xff0c;感觉挺简单&#xff0c;但基本理解的都不够深入。 如果是直接从来没听过背包问题&#xff0c;可以先看文字讲解慢慢了解 这是干什么的。 …

大数据探索性分析——抽样技术应用

2.3 概率抽样 一、简单随机抽样 # 数据预处理 LoanStats3c read.csv("D:/OneDrive - stu.fynu.edu.cn/大四上学期/ysq-大数据探索性分析/data/2数据集二&#xff1a;Loan Data--Lending Club/LoanStats3c/LoanStats3c.csv", header TRUE, fill TRUE, comment.char…

20 webUI应用中Controlnet精讲(06)-结构理解与其它

前面的篇章已经详细讲解了线条约束、三维关系与空间深度、人体姿态等几类controlnet的功能与应用&#xff0c;本节内容将对通过controlnet对图像的结构理解及控图效果。 序号 分类 Controlnet名称 备注 1 线条约束 Canny&#xff08;硬边缘&#xff09; 约束性强&#x…

【MFC】对话框属性:Center(居中)

前言 本文介绍对话框属性中的Center(居中)&#xff0c;同时给出相关示例便于理解。 目录1 位置2 详解3 示例1 位置 首先介绍一下这个属性在哪里。 在资源视图中双击对话框节点&#xff0c;打开该对话框&#xff1b; 鼠标右键工作区空白处&#xff0c;单击属性&#xff1b; 此时…

SciKit-Learn 全面分析分类任务 breast_cancer 数据集

背景 乳腺癌数据集&#xff0c;569个样本&#xff0c;30个特征&#xff0c;2个类别&#xff08;良性/恶性&#xff09; 步骤 加载数据集拆分训练集、测试集数据预处理&#xff08;标准化&#xff09;选择模型模型训练&#xff08;拟合&#xff09;测试模型效果评估模型 分析方法…

【开题答辩全过程】以 _基于SpringBoot技术的“树洞”心理咨询服务平台的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…