import{_ as n,c,a as l,b as s,d as a,o as t}from"./app-Bj0iHonY.js";const x="/images/2015/05/rnd_01.gif",e="/images/2015/05/rnd_02.gif",j="/images/2015/05/rnd_03.gif",i="/images/2015/05/rnd_04.png",o="/images/2015/05/rnd_07.png",p={};function r(u,m){return t(),c("div",null,m[0]||(m[0]=[l(`
最近在工作中遇到这么一个问题:
在游戏场景中有一个怪物生成点,这个生长点产生的怪物均匀分布在半径为R的圆形内,这个随机算法应该如何生成?看起来很简单,随手写了一个:
# define RAND ( ( float ) rand ( ) / RAND_MAX)
void get_random_pos ( float center_x, float center_y, float radius, float & x, float & y)
{
float u = RAND* radius;
float v = RAND* 2 * PI;
x = center_x + u* cos ( v) ;
y = center_y + u* sin ( v) ;
}
但写的过程中,直觉告诉我,这么写肯定是有问题的,试想,如果以北京为例,如果北京的人口是均匀分布的,那么如果让所有人都报出自己家和天安门的距离,那么这些数据肯定不是均匀,因为居住在五环附近的人数肯定要大于居住在二环附近的人数,于是用Mathamatica实验一下:
果然,这么写是不对的,网上查了一下,这个问题还真是有人研究过,说应该把所获得的随机数开平方一下,实验一下:
',8),s("p",null,[a("但是,这个开平方背后的数学原理究竟是什么呢?抽空翻了下概率书,原来,其中的道理并不复杂,这里涉及到概率里的一个基本概念,累计分布函数(Cumulative distribution function),简称CFD,它的定义如下: 设有一个随机变量"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"X")])])]),a(",它的取值范围是从负无穷到正无穷,如果把它的值小于"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])])]),a("的概率表达为一个函数"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")")])])]),a(",那么这个函数就称为"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"X")])])]),a("的累计分布函数")],-1),s("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[s("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mstyle",null,[s("mjx-TeXAtom",{texclass:"ORD"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D443 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c2264"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})])])])]),s("mjx-assistive-mml",{unselectable:"on",display:"block"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mstyle",{displaystyle:"true",scriptlevel:"0"},[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mi",null,"P"),s("mo",{stretchy:"false"},"("),s("mi",null,"X"),s("mo",null,"≤"),s("mi",null,"x"),s("mo",{stretchy:"false"},")")])])])])],-1),s("p",null,[a("以最为常见的均匀分布概率为例,设均匀分布的随机变量"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"X")])])]),a("的取值范围是"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c5B"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44E TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2C"})]),s("mjx-mi",{class:"mjx-i",space:"2"},[s("mjx-c",{class:"mjx-c1D44F TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c5D"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("mi",null,"a"),s("mo",null,","),s("mi",null,"b"),s("mo",{stretchy:"false"},"]")])])]),a(",那么它的累计分布函数以及函数图像是")],-1),s("div",{align:"center"},[s("table",{class:"invisibletable"},[s("tbody",null,[s("tr",null,[s("td",null,[s("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[s("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mrow",{space:"4"},[s("mjx-mo",{class:"mjx-n"},[s("mjx-stretchy-v",{style:{height:"3.613em","vertical-align":"-1.557em"},class:"mjx-c7B"},[s("mjx-beg",null,[s("mjx-c")]),s("mjx-ext",null,[s("mjx-c")]),s("mjx-mid",null,[s("mjx-c")]),s("mjx-ext",null,[s("mjx-c")]),s("mjx-end",null,[s("mjx-c")]),s("mjx-mark")])]),s("mjx-mtable",{style:{"min-width":"6.966em"}},[s("mjx-table",null,[s("mjx-itable",null,[s("mjx-mtr",null,[s("mjx-mtd",{style:{"text-align":"left","padding-right":"0.5em","padding-bottom":"0.1em"}},[s("mjx-mn",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c30"})]),s("mjx-tstrut")]),s("mjx-mtd",{style:{"text-align":"left","padding-left":"0.5em","padding-bottom":"0.1em"}},[s("mjx-TeXAtom",{texclass:"ORD"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3C"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D44E TEX-I"})])]),s("mjx-tstrut")])]),s("mjx-mtr",null,[s("mjx-mtd",{style:{"text-align":"left","padding-right":"0.5em","padding-top":"0.1em","padding-bottom":"0.1em"}},[s("mjx-mfrac",null,[s("mjx-frac",null,[s("mjx-num",null,[s("mjx-nstrut"),s("mjx-mrow",{size:"s"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2212"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44E TEX-I"})])])]),s("mjx-dbox",null,[s("mjx-dtable",null,[s("mjx-line"),s("mjx-row",null,[s("mjx-den",null,[s("mjx-dstrut"),s("mjx-mrow",{size:"s"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44F TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2212"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44E TEX-I"})])])])])])])])]),s("mjx-tstrut")]),s("mjx-mtd",{style:{"text-align":"left","padding-left":"0.5em","padding-top":"0.1em","padding-bottom":"0.1em"}},[s("mjx-TeXAtom",{texclass:"ORD"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44E TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c2264"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3C"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D44F TEX-I"})])]),s("mjx-tstrut")])]),s("mjx-mtr",null,[s("mjx-mtd",{style:{"text-align":"left","padding-right":"0.5em","padding-top":"0.1em"}},[s("mjx-mn",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c31"})]),s("mjx-tstrut")]),s("mjx-mtd",{style:{"text-align":"left","padding-left":"0.5em","padding-top":"0.1em"}},[s("mjx-TeXAtom",{texclass:"ORD"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44F TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c2264"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})])]),s("mjx-tstrut")])])])])]),s("mjx-mo",{class:"mjx-n",style:{"vertical-align":"0.25em"}})])]),s("mjx-assistive-mml",{unselectable:"on",display:"block"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mrow",{"data-mjx-texclass":"INNER"},[s("mo",{"data-mjx-texclass":"OPEN"},"{"),s("mtable",{columnalign:"left left",columnspacing:"1em",rowspacing:".2em"},[s("mtr",null,[s("mtd",null,[s("mn",null,"0")]),s("mtd",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"x"),s("mo",null,"<"),s("mi",null,"a")])])]),s("mtr",null,[s("mtd",null,[s("mfrac",null,[s("mrow",null,[s("mi",null,"x"),s("mo",null,"−"),s("mi",null,"a")]),s("mrow",null,[s("mi",null,"b"),s("mo",null,"−"),s("mi",null,"a")])])]),s("mtd",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"a"),s("mo",null,"≤"),s("mi",null,"x"),s("mo",null,"<"),s("mi",null,"b")])])]),s("mtr",null,[s("mtd",null,[s("mn",null,"1")]),s("mtd",null,[s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"b"),s("mo",null,"≤"),s("mi",null,"x")])])])]),s("mo",{"data-mjx-texclass":"CLOSE",fence:"true",stretchy:"true",symmetric:"true"})])])])])]),s("td",null,[s("img",{src:j})])]),s("tr")])])],-1),s("p",null,"对于一个累计分布函数,符合以下规律",-1),s("ul",null,[s("li",null,[s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mn",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c30"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c2264"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c2264"})]),s("mjx-mn",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c31"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mn",null,"0"),s("mo",null,"≤"),s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mo",null,"≤"),s("mn",null,"1")])])])]),s("li",null,[s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")")])])]),a("单调递增")]),s("li",null,[s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-munder",null,[s("mjx-row",null,[s("mjx-base",{style:{"padding-left":"0.49em"}},[s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c6C"}),s("mjx-c",{class:"mjx-c69"}),s("mjx-c",{class:"mjx-c6D"})])])]),s("mjx-row",null,[s("mjx-under",{style:{"padding-top":"0.188em"}},[s("mjx-TeXAtom",{size:"s",texclass:"ORD"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2192"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2212"})]),s("mjx-mi",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c221E"})])])])])]),s("mjx-TeXAtom",{space:"2",texclass:"ORD"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mn",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c30"})])]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2C"})]),s("mjx-munder",{space:"2"},[s("mjx-row",null,[s("mjx-base",{style:{"padding-left":"0.49em"}},[s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c6C"}),s("mjx-c",{class:"mjx-c69"}),s("mjx-c",{class:"mjx-c6D"})])])]),s("mjx-row",null,[s("mjx-under",{style:{"padding-top":"0.188em"}},[s("mjx-TeXAtom",{size:"s",texclass:"ORD"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2192"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2B"})]),s("mjx-mi",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c221E"})])])])])]),s("mjx-TeXAtom",{space:"2",texclass:"ORD"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mn",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c31"})])])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"lim"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"x"),s("mo",{accent:"false",stretchy:"false"},"→"),s("mo",null,"−"),s("mi",{mathvariant:"normal"},"∞")])]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mn",null,"0")]),s("mo",null,","),s("munder",null,[s("mo",{"data-mjx-texclass":"OP"},"lim"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"x"),s("mo",{accent:"false",stretchy:"false"},"→"),s("mo",null,"+"),s("mi",{mathvariant:"normal"},"∞")])]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mn",null,"1")])])])])])],-1),s("p",null,[a("回到我们的问题中,假设怪物产生的范围的半径为"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D445 TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"R")])])]),a(",随机产生一只怪物时,它和中心的距离是一个随机变量"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"X")])])]),a(",显然,对于怪物均匀分布的情况,"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"X")])])]),a("落在半径为"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])])]),a("的圆内的概率,等于半径为"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"x")])])]),a("小圆和半径为"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"X")])])]),a("的大圆的面积之比")],-1),s("figure",null,[s("img",{src:i,alt:"",tabindex:"0",loading:"lazy"}),s("figcaption")],-1),s("p",null,"也就是说",-1),s("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[s("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D443 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c2264"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-msup",{space:"4"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-script",{style:{"vertical-align":"0.413em"}},[s("mjx-mn",{class:"mjx-n",size:"s"},[s("mjx-c",{class:"mjx-c32"})])])]),s("mjx-TeXAtom",{texclass:"ORD"},[s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2F"})])]),s("mjx-msup",null,[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D445 TEX-I"})]),s("mjx-script",{style:{"vertical-align":"0.413em"}},[s("mjx-mn",{class:"mjx-n",size:"s"},[s("mjx-c",{class:"mjx-c32"})])])])]),s("mjx-assistive-mml",{unselectable:"on",display:"block"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mi",null,"P"),s("mo",{stretchy:"false"},"("),s("mi",null,"X"),s("mo",null,"≤"),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("msup",null,[s("mi",null,"x"),s("mn",null,"2")]),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"/")]),s("msup",null,[s("mi",null,"R"),s("mn",null,"2")])])])],-1),s("p",null,[a("现在我们手头上只有均匀概率的随机数产生器,要想产生这么个随机数需要用到一个很巧妙的运算,就是反函数。设随机变量"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D462 TEX-I"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"u")])])]),a("是一个均匀分布在"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c5B"})]),s("mjx-mn",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c30"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2C"})]),s("mjx-mn",{class:"mjx-n",space:"2"},[s("mjx-c",{class:"mjx-c31"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c5D"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mo",{stretchy:"false"},"["),s("mn",null,"0"),s("mo",null,","),s("mn",null,"1"),s("mo",{stretchy:"false"},"]")])])]),a("之间的随机数,另一个随机变量"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"3"},[s("mjx-c",{class:"mjx-c2212"})]),s("mjx-mn",{class:"mjx-n",space:"3"},[s("mjx-c",{class:"mjx-c31"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D462 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"X"),s("mo",null,"="),s("mi",null,"F"),s("mo",null,"−"),s("mn",null,"1"),s("mo",{stretchy:"false"},"("),s("mi",null,"u"),s("mo",{stretchy:"false"},")")])])]),a(",现在我们需要证明X的累计分布函数是"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")")])])]),s("br"),a(" 证明如下")],-1),s("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[s("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mtable",{style:{"min-width":"12.196em"}},[s("mjx-table",null,[s("mjx-itable",null,[s("mjx-mtr",null,[s("mjx-mtd",{style:{"text-align":"right","padding-right":"0","padding-bottom":"0.15em"}},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D443 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D44B TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c2264"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-tstrut")]),s("mjx-mtd",{style:{"text-align":"left","padding-left":"0","padding-bottom":"0.15em"}},[s("mjx-mi",{class:"mjx-n"}),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D443 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-msup",null,[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-script",{style:{"vertical-align":"0.413em","margin-left":"0.055em"}},[s("mjx-TeXAtom",{size:"s",texclass:"ORD"},[s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2212"})]),s("mjx-mn",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c31"})])])])]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D462 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c2264"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-tstrut")])]),s("mjx-mtr",null,[s("mjx-mtd",{style:{"text-align":"right","padding-right":"0","padding-top":"0.15em","padding-bottom":"0.15em"}},[s("mjx-tstrut")]),s("mjx-mtd",{style:{"text-align":"left","padding-left":"0","padding-top":"0.15em","padding-bottom":"0.15em"}},[s("mjx-mi",{class:"mjx-n"}),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D443 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D462 TEX-I"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c2264"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-tstrut")])]),s("mjx-mtr",null,[s("mjx-mtd",{style:{"text-align":"right","padding-right":"0","padding-top":"0.15em"}},[s("mjx-tstrut")]),s("mjx-mtd",{style:{"text-align":"left","padding-left":"0","padding-top":"0.15em"}},[s("mjx-mi",{class:"mjx-n"}),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-tstrut")])])])])])]),s("mjx-assistive-mml",{unselectable:"on",display:"block"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[s("mtr",null,[s("mtd",null,[s("mi",null,"P"),s("mo",{stretchy:"false"},"("),s("mi",null,"X"),s("mo",null,"≤"),s("mi",null,"x"),s("mo",{stretchy:"false"},")")]),s("mtd",null,[s("mi"),s("mo",null,"="),s("mi",null,"P"),s("mo",{stretchy:"false"},"("),s("msup",null,[s("mi",null,"F"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"1")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"u"),s("mo",{stretchy:"false"},")"),s("mo",null,"≤"),s("mi",null,"x"),s("mo",{stretchy:"false"},")")])]),s("mtr",null,[s("mtd"),s("mtd",null,[s("mi"),s("mo",null,"="),s("mi",null,"P"),s("mo",{stretchy:"false"},"("),s("mi",null,"u"),s("mo",null,"≤"),s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")"),s("mo",{stretchy:"false"},")")])]),s("mtr",null,[s("mtd"),s("mtd",null,[s("mi"),s("mo",null,"="),s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")")])])])])])],-1),s("p",null,"初看起来有点复杂,其实在下面的图上可以很直观的理解这个过程:",-1),s("figure",null,[s("img",{src:o,alt:"",tabindex:"0",loading:"lazy"}),s("figcaption")],-1),s("p",null,[a("这是利用了"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")")])])]),a("是单调递增函数的特性,在我们的问题中,"),s("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[s("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D465 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})])]),s("mjx-assistive-mml",{unselectable:"on",display:"inline"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[s("mi",null,"F"),s("mo",{stretchy:"false"},"("),s("mi",null,"x"),s("mo",{stretchy:"false"},")")])])]),a("的反函数可以表达为")],-1),s("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[s("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[s("mjx-msup",null,[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D439 TEX-I"})]),s("mjx-script",{style:{"vertical-align":"0.413em","margin-left":"0.055em"}},[s("mjx-TeXAtom",{size:"s",texclass:"ORD"},[s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c2212"})]),s("mjx-mn",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c31"})])])])]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c28"})]),s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D462 TEX-I"})]),s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c29"})]),s("mjx-mo",{class:"mjx-n",space:"4"},[s("mjx-c",{class:"mjx-c3D"})]),s("mjx-mi",{class:"mjx-i",space:"4"},[s("mjx-c",{class:"mjx-c1D445 TEX-I"})]),s("mjx-msqrt",null,[s("mjx-sqrt",null,[s("mjx-surd",null,[s("mjx-mo",{class:"mjx-n"},[s("mjx-c",{class:"mjx-c221A"})])]),s("mjx-box",{style:{"padding-top":"0.329em"}},[s("mjx-mi",{class:"mjx-i"},[s("mjx-c",{class:"mjx-c1D462 TEX-I"})])])])])]),s("mjx-assistive-mml",{unselectable:"on",display:"block"},[s("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[s("msup",null,[s("mi",null,"F"),s("mrow",{"data-mjx-texclass":"ORD"},[s("mo",null,"−"),s("mn",null,"1")])]),s("mo",{stretchy:"false"},"("),s("mi",null,"u"),s("mo",{stretchy:"false"},")"),s("mo",null,"="),s("mi",null,"R"),s("msqrt",null,[s("mi",null,"u")])])])],-1),l(`所以最终的算法可以写成
# define RAND ( ( float ) rand ( ) / RAND_MAX)
void get_random_pos ( float center_x, float center_y, float radius, float & x, float & y)
{
float u = sqrt ( RAND) * radius;
float v = RAND* 2 * PI;
x = center_x + u* cos ( v) ;
y = center_y + u* sin ( v) ;
}
`,2)]))}const h=n(p,[["render",r],["__file","RandRound.html.vue"]]),y=JSON.parse('{"path":"/blog/2025/02/RandRound.html","title":"如何生成一个随机的圆形","lang":"zh-CN","frontmatter":{"title":"如何生成一个随机的圆形","tags":"数学 概率 程序 算法"},"headers":[],"git":{"updatedTime":1740310507000,"contributors":[{"name":"thejinchao","username":"thejinchao","email":"thejinchao@gmail.com","commits":2,"url":"https://github.com/thejinchao"}]},"filePathRelative":"blog/2025/02/RandRound.md"}');export{h as comp,y as data};