Unity中模拟生成正态分布的一种方式

using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Mathematics;
using UnityEngine;public class MathFunction : MonoBehaviour
{private void Start(){//key 范围 0-99 表示 0% 到 99%Dictionary<int,uint> m = new Dictionary<int, uint>();for (int i = 0; i < 100; i++){m[i] = 0;}//f(x)为正态函数在[0,x]区间的积分//y = f(x)函数的逆函数 x = f(y)//x 精确到 0.0000 到 0.4999 (正态函数在零到正无穷积分值为0.5000)//y 在 x = 0.4999 时 最大 y = 3.71905 指定 MAX_F 为 3.8float MAX_F = 3.8f;for (int i = 0;i < 1000000; i++){int num = UnityEngine.Random.Range(0,5000);float numR = num / 10000f;float posf = MyErfinv(numR * 2f) * Mathf.Sqrt(2f);int pos = (int)(posf / MAX_F * 100f);if (pos >= 100){pos = 99;}if (pos < 0){pos = 0;}m[pos]++;}string str = "";for(int i = 0;i < m.Count ; i++){str += "百分之"+i.ToString()+" "+m[i].ToString()+" \n";}Debug.Log(str);}// 修正的逆误差函数private float MyErfinv(float a){float p, r, t;t = MyFma(a, -a, 1.0f);t = MyLog(t);if (Mathf.Abs(t) > 6.125f){p = 3.03697567e-10f;p = MyFma(p, t, 2.93243101e-8f);p = MyFma(p, t, 1.22150334e-6f);p = MyFma(p, t, 2.84108955e-5f);p = MyFma(p, t, 3.93552968e-4f);p = MyFma(p, t, 3.02698812e-3f);p = MyFma(p, t, 4.83185798e-3f);p = MyFma(p, t, -2.64646143e-1f);p = MyFma(p, t, 8.40016484e-1f);}else{p = 5.43877832e-9f;p = MyFma(p, t, 1.43285448e-7f);p = MyFma(p, t, 1.22774793e-6f);p = MyFma(p, t, 1.12963626e-7f);p = MyFma(p, t, -5.61530760e-5f);p = MyFma(p, t, -1.47697632e-4f);p = MyFma(p, t, 2.31468678e-3f);p = MyFma(p, t, 1.15392581e-2f);p = MyFma(p, t, -2.32015476e-1f);p = MyFma(p, t, 8.86226892e-1f);}r = a * p;return r;}private float MyFma(float x, float y, float z){return x * y + z;}private float MyLog(float a){float i, m, r, s, t;int e = 0;m = Frexpf(a, ref e);if (m < 0.666666667f){m += m;e -= 1;}i = e;m -= 1.0f;s = m * m;r = -0.130310059f;t = 0.140869141f;r = MyFma(r, s, -0.121484190f);t = MyFma(t, s, 0.139814854f);r = MyFma(r, s, -0.166846052f);t = MyFma(t, s, 0.200120345f);r = MyFma(r, s, -0.249996200f);r = MyFma(t, m, r);r = MyFma(r, m, 0.333331972f);r = MyFma(r, m, -0.500000000f);r = MyFma(r, s, m);r = MyFma(i, 0.693147182f, r);return r;}private float Frexpf(float x, ref int exp){exp = 0;if (x == 0f) return 0f;float abs_x = Mathf.Abs(x);if (abs_x == float.PositiveInfinity || float.IsNaN(abs_x)){return x;}exp = (int)Mathf.Floor(Mathf.Log(abs_x, 2)) + 1;float significand = x * Mathf.Pow(2, -exp);if (Mathf.Abs(significand) >= 1f){significand *= 0.5f;exp++;}else if (Mathf.Abs(significand) < 0.5f && significand != 0f){significand *= 2f;exp--;}return significand;}
}
//随机生成 1000000 条数据
//以下单位(条)
百分之0 30440 
百分之1 30281 
百分之2 30270 
百分之3 30300 
百分之4 29800 
百分之5 29556 
百分之6 29309 
百分之7 28959 
百分之8 28904 
百分之9 28092 
百分之10 28140 
百分之11 27562 
百分之12 27298 
百分之13 26807 
百分之14 26273 
百分之15 25309 
百分之16 24687 
百分之17 24489 
百分之18 23420 
百分之19 23120 
百分之20 22205 
百分之21 21822 
百分之22 20976 
百分之23 20383 
百分之24 19481 
百分之25 19044 
百分之26 18296 
百分之27 17704 
百分之28 16825 
百分之29 16214 
百分之30 15624 
百分之31 14886 
百分之32 13952 
百分之33 13736 
百分之34 12764 
百分之35 12318 
百分之36 11692 
百分之37 10826 
百分之38 10348 
百分之39 9772 
百分之40 9130 
百分之41 8825 
百分之42 8235 
百分之43 7780 
百分之44 7179 
百分之45 6810 
百分之46 6398 
百分之47 5949 
百分之48 5318 
百分之49 5198 
百分之50 4671 
百分之51 4626 
百分之52 4023 
百分之53 3883 
百分之54 3351 
百分之55 3414 
百分之56 3003 
百分之57 2794 
百分之58 2637 
百分之59 2211 
百分之60 2303 
百分之61 2023 
百分之62 1715 
百分之63 1627 
百分之64 1640 
百分之65 1367 
百分之66 1166 
百分之67 1215 
百分之68 1008 
百分之69 762 
百分之70 996 
百分之71 635 
百分之72 822 
百分之73 608 
百分之74 583 
百分之75 397 
百分之76 407 
百分之77 391 
百分之78 386 
百分之79 405 
百分之80 192 
百分之81 209 
百分之82 226 
百分之83 205 
百分之84 210 
百分之85 201 
百分之86 206 
百分之87 0 
百分之88 184 
百分之89 0 
百分之90 207 
百分之91 0 
百分之92 0 
百分之93 194 
百分之94 0 
百分之95 0 
百分之96 0 
百分之97 191 
百分之98 0 
百分之99 0 

图像来源GPT-4

文章借鉴&引用:

Inverse Error Function in C - Stack Overflow

关于C#:精确计算比例互补误差函数erfcx() | 码农家园

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

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

相关文章

【Linux】文件系统和软硬链接

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

redux相关源码

1、createStore 实现 2、connct实现 3、bindActionCreators实现 4、Provider实现 5. thunk

html+css web前端 多边形

<!DOCTYPE html><html><head><meta charset"UTF-8"><title>多边形</title><style type"text/css">#pentagon_6_1 {position: absolute;top: 0px;height: 0; width: 100; border-left: 100px solid rgb(255, 255…

【记忆化搜索 】2312. 卖木头块

本文涉及知识点 记忆化搜索 LeetCode2312. 卖木头块 给你两个整数 m 和 n &#xff0c;分别表示一块矩形木块的高和宽。同时给你一个二维整数数组 prices &#xff0c;其中 prices[i] [hi, wi, pricei] 表示你可以以 pricei 元的价格卖一块高为 hi 宽为 wi 的矩形木块。 每…

网络四层、七层协议

一、OSI七层模型 物理层&#xff1a;建立、维护、断开物理连接。 数据链路层&#xff1a;逻辑连接、寻找硬件地址——地址解析协议&#xff1a;ARP、PARP 反向地址转换协议 网络层&#xff1a;寻找逻辑地址&#xff0c;实现不同网络之间的路径选择——ICMP(互联网控制信息协议…

Vue前端平台的搭建

文章目录 前端平台搭建(`Vue2.6`,App:`HBulderX`)创建`Vue2.6`项目下载相应插件方便开发路由配置对连接后端进行一些配置(`main.js`文件)导入ElementUI组件[组件 | Element](https://element.eleme.cn/#/zh-CN/component/icon)同步与异步`axios`异步请求框架前端平台搭建(Vue2.…

YoloV8改进策略:卷积篇|基于PConv的二次创新|附结构图|性能和精度得到大幅度提高(独家原创)

摘要 在PConv的基础上做了二次创新,创新后的模型不仅在精度和速度上有了质的提升,还可以支持Stride为2的降采样。 改进方法简单高效,需要发论文的同学不要错过! 论文指导 PConv在论文中的描述 论文: 下面我们展示了可以通过利用特征图的冗余来进一步优化成本。如图3所…

windows 在cmd 使用cd命令无法进入指定目录解决方法

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 使用cmd命令想要快速进入某个目录&#xff0c;发现没有跳转&#xff0c;如下&#xff1a; 二、原因分析 cmd 切换目录跨磁盘的话&#xff0c;需要先进行磁盘的转换&#xff0c;也就是要进入到另外一…

使用pkg打包了一个使用了sqlite3的nodejs项目,启动后闪退

从截图来看&#xff0c;问题出在 sqlite3 模块上。说明在打包过程中&#xff0c;sqlite3 模块的 .node 文件没有正确加载。 紧急解决方法&#xff1a; 其实就是exe文件还需要node_modules中的sqlite3 依赖&#xff0c;我们直接在系统顶级放一个node_modules&#xff0c;且其中只…

极简朋友圈rmoments多用户版

什么是 moments &#xff1f; moments 是仿照微信朋友圈开发的个人极简朋友圈。但目前不支持多用户。 什么是 rmoments &#xff1f; rmoments 复刻自 moments&#xff0c;除了支持全部原生功能外&#xff0c;最大的特点是支持多用户。 原版 moments 目前不支持多用户。rmoment…

✅order by 是怎么实现的?

首先排序功能由 ORDER BY 实现&#xff0c;具体排列顺序取决于优化器的选择。若优化器认为索引排序更有效率&#xff0c;则使用索引排序&#xff1b;反之&#xff0c;则使用 filesort&#xff08;执行计划中额外信息提示&#xff1a;使用 filesort&#xff09;。然而&#xff0…

如何制定精益生产团队的目标和考核机制?

当下&#xff0c;精益生产已经成为企业追求高效运营和持续竞争优势的重要策略。而要实现精益生产的最大化效益&#xff0c;制定科学合理的团队目标与考核机制显得尤为重要。本文&#xff0c;深圳天行健企业管理咨询公司将分享如何制定精益生产团队的目标和考核机制&#xff0c;…

【Test 19】 数据结构 快速排序详解!

文章目录 1. 快速排序的非递归版本2. 快速排序2.1 hoare 版本一2.2 挖坑法 &#x1f427;版本二2.3 前后指针 版本三2.4 调用以上的三个版本的快排 3. 快速排序的优化 1. 快速排序的非递归版本 &#x1f192;&#x1f427;关键思路&#xff1a; &#x1f34e;① 参数中的begin…

vue3第三十六节(自定义插件)

一、首先什么是插件 插件 (Plugins) 是一种能为 Vue 添加全局功能的工具代码。 主要应用于以下四个方面 1、通过 app.component() 和 app.directive() 注册一到多个全局组件或自定义指令。 2、通过 app.provide() 使一个资源可被注入进整个应用。 3、向 app.config.globalPro…

【乐吾乐3D可视化组态编辑器】数据集与数据订阅

对于物联网或者数字孪生项目来说&#xff0c;单纯的静态场景展示是无法满足需求的&#xff0c;它需要系统可以提供一种方式将后台数据与模型数据关联&#xff0c;当后台数据推送更新时&#xff0c;模型数据能自动同步。接下来&#xff0c;我们将向您介绍如何在系统中实现这一需…

Linux--线程的分离、线程库的地址关系的理解、线程的简单封装(二)

线程系列&#xff1a; 线程的认识&#xff1a;讲解线程的概念和线程的基本控制 线程的分离 线程分离是指将一个线程从主线程中分离出来&#xff0c;使其能够独立运行。当一个线程被设置为分离状态时&#xff0c;它结束时系统会自动回收其资源&#xff0c;而不需要其他线程使用…

ArcGIS空间数据处理、空间分析与制图;PLUS模型和InVEST模型的原理,参量提取与模型运行及结果分析;土地利用时空变化以及对生态系统服务的影响分析

工业革命以来&#xff0c;社会生产力迅速提高&#xff0c;人类活动频繁&#xff0c;此外人口与日俱增对土地的需求与改造更加强烈&#xff0c;人-地关系日益紧张。此外&#xff0c;土地资源的不合理开发利用更是造成了水土流失、植被退化、水资源短缺、区域气候变化、生物多样性…

北京大学第一医院与智源研究院共同发布基于可信执行环境的AI医学影像挑战赛

肾动脉狭窄是导致继发性高血压及肾功能不全的常见原因&#xff0c;而目前针对肾动脉狭窄功能学的评估尚处于探索阶段。数据保护和可信计算环境是目前人工智能技术应用于临床研究的一大瓶颈。北京大学第一医院与北京智源人工智能研究院心脏AI 联合研究中心特发布基于可信执行环境…

Ubuntu22.04之解决:Flameshot无法截图问题(二百三十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Ant design vue的表格双击编辑功能(即双击开始编辑并自动获得焦点,失去焦点时完成编辑)

本文基于Ant Design Vue官方网站的表格&#xff08;可编辑单元格&#xff09;&#xff08;表格 Table - Ant Design Vue (antdv.com))中的样板代码获得双击编辑且获得焦点、失去焦点时完成编辑的功能。 要点&#xff1a; &#xff08;1&#xff09;双击时候实现编辑&#xff…