import{_ as n}from"./plugin-vue_export-helper-DlAUqK2U.js";import{c as t,a as l,b as Q,e as s,o as T}from"./app-zNUiodpH.js";const i="/images/2015/05/rnd_01.gif",e="/images/2015/05/rnd_02.gif",m="/images/2015/05/rnd_03.gif",r="/images/2015/05/rnd_04.png",d="/images/2015/05/rnd_07.png",o={},h={class:"MathJax",jax:"SVG",style:{position:"relative"}},g={style:{"vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},p={class:"MathJax",jax:"SVG",style:{position:"relative"}},H={style:{"vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},k={class:"MathJax",jax:"SVG",style:{position:"relative"}},f={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.749ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2099 1000","aria-hidden":"true"},u={class:"MathJax",jax:"SVG",style:{position:"relative"}},x={style:{"vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},L={class:"MathJax",jax:"SVG",display:"true",style:{position:"relative"}},c={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"17.464ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 7719.1 1000","aria-hidden":"true"},M={class:"MathJax",jax:"SVG",style:{position:"relative"}},y={style:{"vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},w={class:"MathJax",jax:"SVG",style:{position:"relative"}},A={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.431ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 1958.7 1000","aria-hidden":"true"},Z={align:"center"},D={class:"invisibletable"},B={class:"MathJax",jax:"SVG",display:"true",style:{position:"relative"}},v={style:{"vertical-align":"-3.522ex"},xmlns:"http://www.w3.org/2000/svg",width:"25.537ex",height:"8.175ex",role:"img",focusable:"false",viewBox:"0 -2056.6 11287.3 3613.2","aria-hidden":"true"},V={class:"MathJax",jax:"SVG",style:{position:"relative"}},C={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.046ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 5766.1 1000","aria-hidden":"true"},F={class:"MathJax",jax:"SVG",style:{position:"relative"}},j={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.749ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2099 1000","aria-hidden":"true"},b={class:"MathJax",jax:"SVG",style:{position:"relative"}},R={style:{"vertical-align":"-1.715ex"},xmlns:"http://www.w3.org/2000/svg",width:"30.273ex",height:"3.412ex",role:"img",focusable:"false",viewBox:"0 -750 13380.7 1508","aria-hidden":"true"},E={class:"MathJax",jax:"SVG",style:{position:"relative"}},S={style:{"vertical-align":"-0.048ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.717ex",height:"1.593ex",role:"img",focusable:"false",viewBox:"0 -683 759 704","aria-hidden":"true"},J={class:"MathJax",jax:"SVG",style:{position:"relative"}},O={style:{"vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},G={class:"MathJax",jax:"SVG",style:{position:"relative"}},X={style:{"vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},N={class:"MathJax",jax:"SVG",style:{position:"relative"}},P={style:{"vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},z={class:"MathJax",jax:"SVG",style:{position:"relative"}},q={style:{"vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},I={class:"MathJax",jax:"SVG",style:{position:"relative"}},K={style:{"vertical-align":"0"},xmlns:"http://www.w3.org/2000/svg",width:"1.928ex",height:"1.545ex",role:"img",focusable:"false",viewBox:"0 -683 852 683","aria-hidden":"true"},U={class:"MathJax",jax:"SVG",display:"true",style:{position:"relative"}},W={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"26.599ex",height:"2.565ex",role:"img",focusable:"false",viewBox:"0 -883.9 11756.8 1133.9","aria-hidden":"true"},Y={class:"MathJax",jax:"SVG",style:{position:"relative"}},$={style:{"vertical-align":"-0.025ex"},xmlns:"http://www.w3.org/2000/svg",width:"1.294ex",height:"1.025ex",role:"img",focusable:"false",viewBox:"0 -442 572 453","aria-hidden":"true"},_={class:"MathJax",jax:"SVG",style:{position:"relative"}},Q4={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.526ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2000.7 1000","aria-hidden":"true"},a4={class:"MathJax",jax:"SVG",style:{position:"relative"}},t4={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"13.59ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 6007 1000","aria-hidden":"true"},T4={class:"MathJax",jax:"SVG",style:{position:"relative"}},s4={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.749ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2099 1000","aria-hidden":"true"},l4={class:"MathJax",jax:"SVG",display:"true",style:{position:"relative"}},n4={style:{"vertical-align":"-3.658ex"},xmlns:"http://www.w3.org/2000/svg",width:"27.592ex",height:"8.448ex",role:"img",focusable:"false",viewBox:"0 -2117 12195.6 3733.9","aria-hidden":"true"},i4={class:"MathJax",jax:"SVG",style:{position:"relative"}},e4={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.749ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2099 1000","aria-hidden":"true"},m4={class:"MathJax",jax:"SVG",style:{position:"relative"}},r4={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"4.749ex",height:"2.262ex",role:"img",focusable:"false",viewBox:"0 -750 2099 1000","aria-hidden":"true"},d4={class:"MathJax",jax:"SVG",display:"true",style:{position:"relative"}},o4={style:{"vertical-align":"-0.566ex"},xmlns:"http://www.w3.org/2000/svg",width:"15.065ex",height:"2.581ex",role:"img",focusable:"false",viewBox:"0 -890.8 6658.5 1140.8","aria-hidden":"true"};function h4(g4,a){return T(),t("div",null,[a[81]||(a[81]=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)),Q("p",null,[a[8]||(a[8]=s("但是,这个开平方背后的数学原理究竟是什么呢?抽空翻了下概率书,原来,其中的道理并不复杂,这里涉及到概率里的一个基本概念,累计分布函数(Cumulative distribution function),简称CFD,它的定义如下:",-1)),a[9]||(a[9]=Q("br",null,null,-1)),a[10]||(a[10]=s(" 设有一个随机变量",-1)),Q("mjx-container",h,[(T(),t("svg",g,[...a[0]||(a[0]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"})])])],-1)])])),a[1]||(a[1]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"X")])],-1))]),a[11]||(a[11]=s(",它的取值范围是从负无穷到正无穷,如果把它的值小于",-1)),Q("mjx-container",p,[(T(),t("svg",H,[...a[2]||(a[2]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"})])])],-1)])])),a[3]||(a[3]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"x")])],-1))]),a[12]||(a[12]=s("的概率表达为一个函数",-1)),Q("mjx-container",k,[(T(),t("svg",f,[...a[4]||(a[4]=[l('',1)])])),a[5]||(a[5]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")")])],-1))]),a[13]||(a[13]=s(",那么这个函数就称为",-1)),Q("mjx-container",u,[(T(),t("svg",x,[...a[6]||(a[6]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"})])])],-1)])])),a[7]||(a[7]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"X")])],-1))]),a[14]||(a[14]=s("的累计分布函数",-1))]),Q("mjx-container",L,[(T(),t("svg",c,[...a[15]||(a[15]=[l('',1)])])),a[16]||(a[16]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mstyle",{displaystyle:"true",scriptlevel:"0"},[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mi",null,"P"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"X"),Q("mo",null,"≤"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")")])])])],-1))]),Q("p",null,[a[21]||(a[21]=s("以最为常见的均匀分布概率为例,设均匀分布的随机变量",-1)),Q("mjx-container",M,[(T(),t("svg",y,[...a[17]||(a[17]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"})])])],-1)])])),a[18]||(a[18]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"X")])],-1))]),a[22]||(a[22]=s("的取值范围是",-1)),Q("mjx-container",w,[(T(),t("svg",A,[...a[19]||(a[19]=[l('',1)])])),a[20]||(a[20]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"["),Q("mi",null,"a"),Q("mo",null,","),Q("mi",null,"b"),Q("mo",{stretchy:"false"},"]")])],-1))]),a[23]||(a[23]=s(",那么它的累计分布函数以及函数图像是",-1))]),Q("div",Z,[Q("table",D,[Q("tbody",null,[Q("tr",null,[Q("td",null,[Q("mjx-container",B,[(T(),t("svg",v,[...a[24]||(a[24]=[l('',1)])])),a[25]||(a[25]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mrow",{"data-mjx-texclass":"INNER"},[Q("mo",{"data-mjx-texclass":"OPEN"},"{"),Q("mtable",{columnalign:"left left",columnspacing:"1em",rowspacing:".2em"},[Q("mtr",null,[Q("mtd",null,[Q("mn",null,"0")]),Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"x"),Q("mo",null,"<"),Q("mi",null,"a")])])]),Q("mtr",null,[Q("mtd",null,[Q("mfrac",null,[Q("mrow",null,[Q("mi",null,"x"),Q("mo",null,"−"),Q("mi",null,"a")]),Q("mrow",null,[Q("mi",null,"b"),Q("mo",null,"−"),Q("mi",null,"a")])])]),Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"a"),Q("mo",null,"≤"),Q("mi",null,"x"),Q("mo",null,"<"),Q("mi",null,"b")])])]),Q("mtr",null,[Q("mtd",null,[Q("mn",null,"1")]),Q("mtd",null,[Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"b"),Q("mo",null,"≤"),Q("mi",null,"x")])])])]),Q("mo",{"data-mjx-texclass":"CLOSE",fence:"true",stretchy:"true",symmetric:"true"})])])],-1))])]),a[26]||(a[26]=Q("td",null,[Q("img",{src:m})],-1))]),a[27]||(a[27]=Q("tr",null,null,-1))])])]),a[82]||(a[82]=Q("p",null,"对于一个累计分布函数,符合以下规律",-1)),Q("ul",null,[Q("li",null,[Q("mjx-container",V,[(T(),t("svg",C,[...a[28]||(a[28]=[l('',1)])])),a[29]||(a[29]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mn",null,"0"),Q("mo",null,"≤"),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"≤"),Q("mn",null,"1")])],-1))])]),Q("li",null,[Q("mjx-container",F,[(T(),t("svg",j,[...a[30]||(a[30]=[l('',1)])])),a[31]||(a[31]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")")])],-1))]),a[32]||(a[32]=s("单调递增",-1))]),Q("li",null,[Q("mjx-container",b,[(T(),t("svg",R,[...a[33]||(a[33]=[l('',1)])])),a[34]||(a[34]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"lim"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"x"),Q("mo",{accent:"false",stretchy:"false"},"→"),Q("mo",null,"−"),Q("mi",{mathvariant:"normal"},"∞")])]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mn",null,"0")]),Q("mo",null,","),Q("munder",null,[Q("mo",{"data-mjx-texclass":"OP"},"lim"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"x"),Q("mo",{accent:"false",stretchy:"false"},"→"),Q("mo",null,"+"),Q("mi",{mathvariant:"normal"},"∞")])]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mn",null,"1")])])],-1))])])]),Q("p",null,[a[47]||(a[47]=s("回到我们的问题中,假设怪物产生的范围的半径为",-1)),Q("mjx-container",E,[(T(),t("svg",S,[...a[35]||(a[35]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D445",d:"M230 637Q203 637 198 638T193 649Q193 676 204 682Q206 683 378 683Q550 682 564 680Q620 672 658 652T712 606T733 563T739 529Q739 484 710 445T643 385T576 351T538 338L545 333Q612 295 612 223Q612 212 607 162T602 80V71Q602 53 603 43T614 25T640 16Q668 16 686 38T712 85Q717 99 720 102T735 105Q755 105 755 93Q755 75 731 36Q693 -21 641 -21H632Q571 -21 531 4T487 82Q487 109 502 166T517 239Q517 290 474 313Q459 320 449 321T378 323H309L277 193Q244 61 244 59Q244 55 245 54T252 50T269 48T302 46H333Q339 38 339 37T336 19Q332 6 326 0H311Q275 2 180 2Q146 2 117 2T71 2T50 1Q33 1 33 10Q33 12 36 24Q41 43 46 45Q50 46 61 46H67Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628Q287 635 230 637ZM630 554Q630 586 609 608T523 636Q521 636 500 636T462 637H440Q393 637 386 627Q385 624 352 494T319 361Q319 360 388 360Q466 361 492 367Q556 377 592 426Q608 449 619 486T630 554Z"})])])],-1)])])),a[36]||(a[36]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"R")])],-1))]),a[48]||(a[48]=s(",随机产生一只怪物时,它和中心的距离是一个随机变量",-1)),Q("mjx-container",J,[(T(),t("svg",O,[...a[37]||(a[37]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"})])])],-1)])])),a[38]||(a[38]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"X")])],-1))]),a[49]||(a[49]=s(",显然,对于怪物均匀分布的情况,",-1)),Q("mjx-container",G,[(T(),t("svg",X,[...a[39]||(a[39]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"})])])],-1)])])),a[40]||(a[40]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"X")])],-1))]),a[50]||(a[50]=s("落在半径为",-1)),Q("mjx-container",N,[(T(),t("svg",P,[...a[41]||(a[41]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"})])])],-1)])])),a[42]||(a[42]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"x")])],-1))]),a[51]||(a[51]=s("的圆内的概率,等于半径为",-1)),Q("mjx-container",z,[(T(),t("svg",q,[...a[43]||(a[43]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D465",d:"M52 289Q59 331 106 386T222 442Q257 442 286 424T329 379Q371 442 430 442Q467 442 494 420T522 361Q522 332 508 314T481 292T458 288Q439 288 427 299T415 328Q415 374 465 391Q454 404 425 404Q412 404 406 402Q368 386 350 336Q290 115 290 78Q290 50 306 38T341 26Q378 26 414 59T463 140Q466 150 469 151T485 153H489Q504 153 504 145Q504 144 502 134Q486 77 440 33T333 -11Q263 -11 227 52Q186 -10 133 -10H127Q78 -10 57 16T35 71Q35 103 54 123T99 143Q142 143 142 101Q142 81 130 66T107 46T94 41L91 40Q91 39 97 36T113 29T132 26Q168 26 194 71Q203 87 217 139T245 247T261 313Q266 340 266 352Q266 380 251 392T217 404Q177 404 142 372T93 290Q91 281 88 280T72 278H58Q52 284 52 289Z"})])])],-1)])])),a[44]||(a[44]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"x")])],-1))]),a[52]||(a[52]=s("小圆和半径为",-1)),Q("mjx-container",I,[(T(),t("svg",K,[...a[45]||(a[45]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D44B",d:"M42 0H40Q26 0 26 11Q26 15 29 27Q33 41 36 43T55 46Q141 49 190 98Q200 108 306 224T411 342Q302 620 297 625Q288 636 234 637H206Q200 643 200 645T202 664Q206 677 212 683H226Q260 681 347 681Q380 681 408 681T453 682T473 682Q490 682 490 671Q490 670 488 658Q484 643 481 640T465 637Q434 634 411 620L488 426L541 485Q646 598 646 610Q646 628 622 635Q617 635 609 637Q594 637 594 648Q594 650 596 664Q600 677 606 683H618Q619 683 643 683T697 681T738 680Q828 680 837 683H845Q852 676 852 672Q850 647 840 637H824Q790 636 763 628T722 611T698 593L687 584Q687 585 592 480L505 384Q505 383 536 304T601 142T638 56Q648 47 699 46Q734 46 734 37Q734 35 732 23Q728 7 725 4T711 1Q708 1 678 1T589 2Q528 2 496 2T461 1Q444 1 444 10Q444 11 446 25Q448 35 450 39T455 44T464 46T480 47T506 54Q523 62 523 64Q522 64 476 181L429 299Q241 95 236 84Q232 76 232 72Q232 53 261 47Q262 47 267 47T273 46Q276 46 277 46T280 45T283 42T284 35Q284 26 282 19Q279 6 276 4T261 1Q258 1 243 1T201 2T142 2Q64 2 42 0Z"})])])],-1)])])),a[46]||(a[46]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"X")])],-1))]),a[53]||(a[53]=s("的大圆的面积之比",-1))]),a[83]||(a[83]=Q("figure",null,[Q("img",{src:r,alt:"",tabindex:"0",loading:"lazy"}),Q("figcaption")],-1)),a[84]||(a[84]=Q("p",null,"也就是说",-1)),Q("mjx-container",U,[(T(),t("svg",W,[...a[54]||(a[54]=[l('',1)])])),a[55]||(a[55]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mi",null,"P"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"X"),Q("mo",null,"≤"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("msup",null,[Q("mi",null,"x"),Q("mn",null,"2")]),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"/")]),Q("msup",null,[Q("mi",null,"R"),Q("mn",null,"2")])])],-1))]),Q("p",null,[a[64]||(a[64]=s("现在我们手头上只有均匀概率的随机数产生器,要想产生这么个随机数需要用到一个很巧妙的运算,就是反函数。设随机变量",-1)),Q("mjx-container",Y,[(T(),t("svg",$,[...a[56]||(a[56]=[Q("g",{stroke:"currentColor",fill:"currentColor","stroke-width":"0",transform:"scale(1,-1)"},[Q("g",{"data-mml-node":"math"},[Q("g",{"data-mml-node":"mi"},[Q("path",{"data-c":"1D462",d:"M21 287Q21 295 30 318T55 370T99 420T158 442Q204 442 227 417T250 358Q250 340 216 246T182 105Q182 62 196 45T238 27T291 44T328 78L339 95Q341 99 377 247Q407 367 413 387T427 416Q444 431 463 431Q480 431 488 421T496 402L420 84Q419 79 419 68Q419 43 426 35T447 26Q469 29 482 57T512 145Q514 153 532 153Q551 153 551 144Q550 139 549 130T540 98T523 55T498 17T462 -8Q454 -10 438 -10Q372 -10 347 46Q345 45 336 36T318 21T296 6T267 -6T233 -11Q189 -11 155 7Q103 38 103 113Q103 170 138 262T173 379Q173 380 173 381Q173 390 173 393T169 400T158 404H154Q131 404 112 385T82 344T65 302T57 280Q55 278 41 278H27Q21 284 21 287Z"})])])],-1)])])),a[57]||(a[57]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"u")])],-1))]),a[65]||(a[65]=s("是一个均匀分布在",-1)),Q("mjx-container",_,[(T(),t("svg",Q4,[...a[58]||(a[58]=[l('',1)])])),a[59]||(a[59]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mo",{stretchy:"false"},"["),Q("mn",null,"0"),Q("mo",null,","),Q("mn",null,"1"),Q("mo",{stretchy:"false"},"]")])],-1))]),a[66]||(a[66]=s("之间的随机数,另一个随机变量",-1)),Q("mjx-container",a4,[(T(),t("svg",t4,[...a[60]||(a[60]=[l('',1)])])),a[61]||(a[61]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"X"),Q("mo",null,"="),Q("mi",null,"F"),Q("mo",null,"−"),Q("mn",null,"1"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"u"),Q("mo",{stretchy:"false"},")")])],-1))]),a[67]||(a[67]=s(",现在我们需要证明X的累计分布函数是",-1)),Q("mjx-container",T4,[(T(),t("svg",s4,[...a[62]||(a[62]=[l('',1)])])),a[63]||(a[63]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")")])],-1))]),a[68]||(a[68]=Q("br",null,null,-1)),a[69]||(a[69]=s(" 证明如下",-1))]),Q("mjx-container",l4,[(T(),t("svg",n4,[...a[70]||(a[70]=[l('',1)])])),a[71]||(a[71]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("mtable",{displaystyle:"true",columnalign:"right left",columnspacing:"0em",rowspacing:"3pt"},[Q("mtr",null,[Q("mtd",null,[Q("mi",null,"P"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"X"),Q("mo",null,"≤"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")")]),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mi",null,"P"),Q("mo",{stretchy:"false"},"("),Q("msup",null,[Q("mi",null,"F"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"u"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"≤"),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mi",null,"P"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"u"),Q("mo",null,"≤"),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")"),Q("mo",{stretchy:"false"},")")])]),Q("mtr",null,[Q("mtd"),Q("mtd",null,[Q("mi"),Q("mo",null,"="),Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")")])])])])],-1))]),a[85]||(a[85]=Q("p",null,"初看起来有点复杂,其实在下面的图上可以很直观的理解这个过程:",-1)),a[86]||(a[86]=Q("figure",null,[Q("img",{src:d,alt:"",tabindex:"0",loading:"lazy"}),Q("figcaption")],-1)),Q("p",null,[a[76]||(a[76]=s("这是利用了",-1)),Q("mjx-container",i4,[(T(),t("svg",e4,[...a[72]||(a[72]=[l('',1)])])),a[73]||(a[73]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")")])],-1))]),a[77]||(a[77]=s("是单调递增函数的特性,在我们的问题中,",-1)),Q("mjx-container",m4,[(T(),t("svg",r4,[...a[74]||(a[74]=[l('',1)])])),a[75]||(a[75]=Q("mjx-assistive-mml",{unselectable:"on",display:"inline"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[Q("mi",null,"F"),Q("mo",{stretchy:"false"},"("),Q("mi",null,"x"),Q("mo",{stretchy:"false"},")")])],-1))]),a[78]||(a[78]=s("的反函数可以表达为",-1))]),Q("mjx-container",d4,[(T(),t("svg",o4,[...a[79]||(a[79]=[l('',1)])])),a[80]||(a[80]=Q("mjx-assistive-mml",{unselectable:"on",display:"block"},[Q("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[Q("msup",null,[Q("mi",null,"F"),Q("mrow",{"data-mjx-texclass":"ORD"},[Q("mo",null,"−"),Q("mn",null,"1")])]),Q("mo",{stretchy:"false"},"("),Q("mi",null,"u"),Q("mo",{stretchy:"false"},")"),Q("mo",null,"="),Q("mi",null,"R"),Q("msqrt",null,[Q("mi",null,"u")])])],-1))]),a[87]||(a[87]=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 k4=n(o,[["render",h4]]),f4=JSON.parse('{"path":"/blog/2025/02/RandRound.html","title":"如何生成一个随机的圆形","lang":"zh-CN","frontmatter":{"title":"如何生成一个随机的圆形","tags":"数学 概率 程序 算法","description":"如何生成一个随机的圆形 最近在工作中遇到这么一个问题: 在游戏场景中有一个怪物生成点,这个生长点产生的怪物均匀分布在半径为R的圆形内,这个随机算法应该如何生成?看起来很简单,随手写了一个: 但写的过程中,直觉告诉我,这么写肯定是有问题的,试想,如果以北京为例,如果北京的人口是均匀分布的,那么如果让所有人都报出自己家和天安门的距离,那么这些数据肯定不是均...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"如何生成一个随机的圆形\\",\\"image\\":[\\"https://thejinchao.github.io/images/2015/05/rnd_01.gif\\",\\"https://thejinchao.github.io/images/2015/05/rnd_02.gif\\",\\"https://thejinchao.github.io/images/2015/05/rnd_04.png\\",\\"https://thejinchao.github.io/images/2015/05/rnd_07.png\\"],\\"dateModified\\":\\"2025-02-23T11:35:07.000Z\\",\\"author\\":[{\\"@type\\":\\"Person\\",\\"name\\":\\"JinChao\\",\\"url\\":\\"https://thecodeway.com\\"}]}"],["meta",{"property":"og:url","content":"https://thejinchao.github.io/blog/2025/02/RandRound.html"}],["meta",{"property":"og:site_name","content":"我的博客和笔记"}],["meta",{"property":"og:title","content":"如何生成一个随机的圆形"}],["meta",{"property":"og:description","content":"如何生成一个随机的圆形 最近在工作中遇到这么一个问题: 在游戏场景中有一个怪物生成点,这个生长点产生的怪物均匀分布在半径为R的圆形内,这个随机算法应该如何生成?看起来很简单,随手写了一个: 但写的过程中,直觉告诉我,这么写肯定是有问题的,试想,如果以北京为例,如果北京的人口是均匀分布的,那么如果让所有人都报出自己家和天安门的距离,那么这些数据肯定不是均..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:image","content":"https://thejinchao.github.io/images/2015/05/rnd_01.gif"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2025-02-23T11:35:07.000Z"}],["meta",{"property":"article:modified_time","content":"2025-02-23T11:35:07.000Z"}]]},"git":{"createdTime":1740225290000,"updatedTime":1740310507000,"contributors":[{"name":"thejinchao","username":"thejinchao","email":"thejinchao@gmail.com","commits":2,"url":"https://github.com/thejinchao"}]},"readingTime":{"minutes":3.13,"words":938},"filePathRelative":"blog/2025/02/RandRound.md","autoDesc":true}');export{k4 as comp,f4 as data};