看得见的算法——不用可视化求PI

看得见的算法——不用可视化求PI

https://blog.youkuaiyun.com/qq_40163148/article/details/95038996

这里只有核心类相关类和核心思想在这篇

我们不用可视化求1000000个点PI的值

package com.lipengge.montecarlo.controller;

import java.awt.Point;

import com.lipengge.montecarlo.data.MonteCarloData;
import com.lipengge.montecarlo.model.Circle;

public class MonteCarloeExperiment {
	public MonteCarloeExperiment(int Number,int  RectangleWidth,int side){
		Circle circle=new Circle(RectangleWidth/2, RectangleWidth/2, RectangleWidth/2);
		MonteCarloData data=new MonteCarloData(circle);
		for(int i=0;i<Number;i++){
			if(i%side==0){
				System.out.println(data.questPI());
			}
			int x=(int)(Math.random()* RectangleWidth);
			int y=(int)(Math.random()* RectangleWidth);
			data.addPoint(new Point(x,y));
			data.countInsideCircle(i);
		}
	}
   public static void main(String[] args) {
	   new MonteCarloeExperiment(1000000,1000,10000);
   }
}

0.0
3.1376
3.1464
3.1501333333333332
3.1482
3.14416
3.1416666666666666
3.1414285714285715
3.1413
3.1415555555555557
3.14268
3.1436727272727274
3.1439
3.1441846153846154
3.1432
3.14424
3.144625
3.1445176470588234
3.1454666666666666
3.144063157894737
3.14418
3.1436761904761905
3.1444
3.1449217391304347
3.1446
3.144
3.1444615384615386
3.143851851851852
3.1435857142857144
3.143751724137931
3.1445333333333334
3.1445806451612905
3.1436625
3.1431151515151514
3.1427882352941174
3.142182857142857
3.143088888888889
3.1428432432432434
3.143042105263158
3.1429948717948717
3.14283
3.1425951219512194
3.142514285714286
3.1421488372093025
3.1423454545454543
3.142968888888889
3.1430347826086957
3.142
3.1420416666666666
3.1419673469387757
3.142072
3.1418901960784313
3.1421153846153844
3.1419396226415093
3.1419555555555556
3.142130909090909
3.1422785714285713
3.141817543859649
3.1417862068965516
3.141457627118644
3.1412533333333332
3.141429508196721
3.1412709677419355
3.1415301587301587
3.14155
3.141649230769231
3.1415818181818183
3.1421671641791047
3.1421588235294116
3.1419188405797103
3.141902857142857
3.1418028169014085
3.142061111111111
3.142071232876712
3.1421891891891893
3.142085333333333
3.141784210526316
3.1417766233766233
3.141851282051282
3.141772151898734
3.14189
3.141916049382716
3.1423317073170733
3.142419277108434
3.1429285714285715
3.1425976470588237
3.1425302325581397
3.142574712643678
3.142381818181818
3.1423505617977527
3.141991111111111
3.1419252747252746
3.1419434782608695
3.1418623655913978
3.141868085106383
3.141882105263158
3.1418583333333334
3.14199587628866
3.1419102040816327
3.1418909090909093

我们可以看到和10000个点比较不仅准确了而且拨动范围更小了那么我们上一节的结论正确吗其实我们上节课的结论有一点是不太正确的那就是精确度不会变差只是到达一定数量精确度很难再变化下面是64万个点的结果可以到看到只是很小的波动准确度没有变化多少(这里之所以说不太是因为点的随机性会对结果产生一些影响又可能很多点已经重合)

0.0
3.1264
3.1334
3.139466666666667
3.1363
3.13936
3.1418666666666666
3.1398285714285716
3.14265
3.1416444444444442
3.13956
3.1404363636363635
3.1417
3.1412615384615385
3.141657142857143
3.1421866666666665
3.140275
3.1406823529411763
3.140111111111111
3.138926315789474
3.13826
3.1383619047619047
3.1379454545454544
3.138086956521739
3.13955
3.138816
3.139830769230769
3.1401925925925926
3.1402571428571426
3.1400689655172416
3.13996
3.140541935483871
3.13975
3.139890909090909
3.1401529411764706
3.14
3.139622222222222
3.14
3.1396105263157894
3.1395794871794873
3.13959
3.13969756097561
3.1398190476190475
3.140139534883721
3.1399454545454546
3.1396266666666666
3.1395304347826087
3.1404936170212765
3.1407333333333334
3.140661224489796
3.140664
3.140556862745098
3.1405692307692306
3.1404603773584907
3.140340740740741
3.140909090909091
3.1409214285714286
3.141164912280702
3.1407724137931035
3.1408542372881354
3.1409066666666665
3.140406557377049
3.1406516129032256
3.1408
3.14080625
3.1409415384615387
3.140830303030303
3.140728358208955
3.1405176470588234
3.1405971014492753
3.1403942857142857
3.1400169014084507
3.1402666666666668
3.1398246575342466
3.1396054054054052
3.1396106666666665
3.1399421052631578
3.139901298701299
3.1397794871794873
3.139746835443038
3.14011
3.1397382716049385
3.1394536585365853
3.1393879518072287
3.1394761904761905
3.139270588235294
3.138846511627907
3.138933333333333
3.139009090909091
3.1391280898876404
3.1391644444444444
3.139353846153846
3.139313043478261
3.139217204301075
3.139408510638298
3.13976
3.1397125
3.139863917525773
3.1397918367346938
3.1397737373737375
3.140156
3.1403049504950493
3.1405333333333334
3.1407728155339805
3.1407538461538462
3.1406057142857144
3.1407245283018868
3.1405757009345794
3.1404814814814817
3.140491743119266
3.1405309090909093
3.14058018018018
3.140767857142857
3.1408566371681417
3.1408526315789476
3.1407721739130436
3.140744827586207
3.140940170940171
3.141037288135593
3.14112268907563
3.141113333333333
3.1413652892561985
3.1415081967213117
3.141437398373984
3.1414064516129034
3.14136
3.14128253968254
3.1413543307086615
3.14134375
3.141277519379845
3.141347692307692
3.141248854961832
3.141069696969697
3.1409864661654137
3.1409940298507464
3.1410725925925926
3.1410117647058824
3.1410131386861315
3.1408811594202897
3.1408920863309353
3.1408
3.140828368794326
3.140907042253521
3.1406713286713286
3.1406305555555556
3.1406731034482758
3.1407890410958905
3.1409795918367345
3.141010810810811
3.1408805369127517
3.141
3.1411258278145695
3.1410736842105265
3.1410823529411767
3.1411506493506494
3.1411329032258064
3.141153846153846
3.1412050955414013
3.141227848101266
3.1413308176100627
3.141325
3.141207453416149
3.1412716049382716
3.141401226993865
3.1414731707317074
3.1415030303030305
3.141730120481928
3.1417676646706587
3.1417
3.1417420118343196
3.1418541176470587
3.14180350877193
3.1417116279069766
3.141690173410405
3.14167816091954
3.1416594285714288
3.141625
3.1416632768361583
3.141761797752809
3.141608938547486
3.1415377777777778
3.14153591160221
3.1415582417582417
3.1415453551912567
3.1415108695652174
3.1415351351351353
3.141578494623656
3.141679144385027
3.141568085106383
3.1414328042328044
3.1414968421052634
3.141398952879581
3.1414395833333333
3.1415233160621763
3.1414742268041236
3.141499487179487
3.1415061224489795
3.141486294416244
3.141519191919192
3.141624120603015
3.141676
3.1416935323383086
3.1417465346534654
3.141814778325123
3.1418823529411766
3.14184
3.141798058252427
3.1419188405797103
3.1418923076923075
3.1419483253588516
3.1419619047619047
3.142036018957346
3.1419622641509433
3.1419474178403757
3.1420205607476634
3.1420148837209303
3.142062962962963
3.142057142857143
3.142023853211009
3.1419963470319634
3.1421272727272727
3.14220814479638
3.1419765765765764
3.1420896860986547
3.1421232142857143
3.142209777777778
3.1422530973451326
3.142229074889868
3.142145614035088
3.142160698689956
3.1421147826086955
3.142131601731602
3.142055172413793
3.1420549356223177
3.1419350427350428
3.141902978723404
3.1418677966101693
3.1418025316455696
3.1418100840336134
3.141774058577406
3.1418083333333335
3.1416995850622405
3.1416462809917354
3.141688888888889
3.141672131147541
3.141702857142857
3.141720325203252
3.1417052631578946
3.141756451612903
3.1416883534136546
3.1416832
3.1417545816733066
3.141774603174603
3.1418529644268776
3.1418708661417325
3.1418635294117645
3.1418671875
3.1418677042801555
3.141998449612403
3.1419861003861005
3.1419584615384615
3.141966283524904
3.1419190839694657
3.1419665399239545
3.141910606060606
3.141926037735849
3.141836090225564
3.1418591760299623
3.141920895522388
3.1418765799256505
3.141868148148148
3.1418878228782288
3.1417882352941175
3.141917948717949
3.141884671532847
3.1420043636363637
3.142040579710145
3.141971119133574
3.1419942446043168
3.1420086021505376
3.141987142857143
3.1420768683274023
3.1420099290780144
3.142042402826855
3.142032394366197
3.1419901754385964
3.141979020979021
3.141955400696864
3.1420041666666667
3.141943252595156
3.1419793103448277
3.141947766323024
3.141945205479452
3.1419686006825938
3.141900680272109
3.14192406779661
3.1418932432432434
3.141919191919192
3.1418429530201344
3.1418020066889634
3.141712
3.141736877076412
3.1417298013245034
3.14173597359736
3.141747368421053
3.141735081967213
3.1417359477124185
3.1417472312703585
3.1417064935064936
3.1417126213592232
3.141763870967742
3.1417131832797427
3.1417871794871797
3.1417201277955273
3.1416942675159234
3.141629206349206
3.141598734177215
3.141636593059937
3.1416729559748426
3.1416401253918496
3.14159625
3.14163738317757
3.141688198757764
3.1415876160990712
3.1416271604938273
3.1415815384615384
3.1416220858895705
3.141639143730887
3.141610975609756
3.1415659574468084
3.141569696969697
3.1415625377643503
3.141556626506024
3.141592792792793
3.141562874251497
3.1415641791044777
3.1414809523809524
3.1414646884272996
3.1414
3.141382890855457
3.1413670588235294
3.141291495601173
3.1412619883040938
3.1413446064139943
3.141322093023256
3.14127768115942
3.1413826589595377
3.1413256484149854
3.1414114942528735
3.1414005730659027
3.141386285714286
3.1413960113960115
3.1414147727272725
3.141415297450425
3.141431638418079
3.1414535211267607
3.141443820224719
3.1414319327731093
3.1414167597765363
3.141475208913649
3.14149
3.141508033240997
3.141465193370166
3.141452341597796
3.1415417582417584
3.1415758904109587
3.141554098360656
3.1415389645776566
3.141533695652174
3.1415414634146344
3.1415621621621623
3.1415148247978437
3.14147311827957
3.1414391420911527
3.141377540106952
3.141374933333333
3.141381914893617
3.1413750663129973
3.1414285714285715
3.141375197889182
3.141267368421053
3.141339632545932
3.141328795811518
3.141369190600522
3.1414260416666666
3.1414451948051947
3.1414435233160622
3.141514211886305
3.1415123711340205
3.1415753213367608
3.1415825641025643
3.1415590792838874
3.141523469387755
3.1414045801526718
3.141405076142132
3.1413215189873416
3.1412545454545455
3.1412614609571787
3.1412301507537688
3.141268170426065
3.141228
3.141176059850374
3.1411472636815922
3.1411047146401985
3.14109801980198
3.1410943209876545
3.1410354679802954
3.140967076167076
3.1408960784313726
3.140868459657702
3.140830243902439
3.1407863746958635
3.1408233009708737
3.140811622276029
3.1407468599033814
3.140773012048193
3.1407846153846153
3.140726139088729
3.1407177033492824
3.1407121718377087
3.140824761904762
3.1407961995249405
3.1407905213270144
3.140747990543735
3.140817924528302
3.1408404705882353
3.1408093896713614
3.140825292740047
3.1408757009345796
3.1408680652680654
3.14076
3.140872389791183
3.140812962962963
3.140821247113164
3.1408829493087556
3.140857931034483
3.1408807339449543
3.1408183066361555
3.14091598173516
3.1410086560364463
3.1410127272727273
3.141027664399093
3.1409927601809953
3.141044695259594
3.1409945945945945
3.141013033707865
3.1410152466367713
3.1410102908277406
3.141010714285714
3.141004008908686
3.1410684444444446
3.1410456762749446
3.141088495575221
3.1410560706401767
3.1410334801762114
3.1410584615384614
3.1410728070175438
3.1411168490153174
3.1410497816593885
3.141063180827887
3.1410860869565216
3.1411002169197397
3.1410978354978356
3.1410427645788337
3.141043103448276
3.1410520430107525
3.141048068669528
3.1410372591006426
3.141030769230769
3.140992750533049
3.1409821276595746
3.14095966029724
3.1409669491525425
3.140937843551797
3.1409088607594935
3.140885052631579
3.1408529411764707
3.1408025157232706
3.1408008368200835
3.1407949895615865
3.1408025
3.140755925155925
3.1407336099585064
3.140735403726708
3.140763636363636
3.1407488659793814
3.1407267489711934
3.1407211498973306
3.1406975409836067
3.140684662576687
3.1406514285714286
3.1405816700611
3.1405569105691056
3.140584989858012
3.140599190283401
3.1406028282828284
3.1405879032258066
3.1405464788732393
3.14054859437751
3.140510621242485
3.1404952
3.140538123752495
3.1405418326693226
3.1405153081510933
3.140597619047619
3.140508514851485
3.1405612648221344
3.1405861932938857
3.140628346456693
3.1405618860510804
3.140573333333333
3.1405949119373777
3.14061875
3.140638596491228
3.1406443579766536
3.140564660194175
3.1405457364341087
3.1405075435203096
3.140485714285714
3.1405317919075144
3.14047
3.14042763915547
3.140446743295019
3.140506309751434
3.140463358778626
3.140479238095238
3.140484410646388
3.140459203036053
3.140460606060606
3.1404105860113423
3.140427169811321
3.1403977401129946
3.1403887218045115
3.1403827392120074
3.1403700374531835
3.140341682242991
3.140379104477612
3.140403724394786
3.1404029739776953
3.1404415584415584
3.1404444444444444
3.140485767097967
3.1404937269372692
3.1405576427255983
3.1404970588235295
3.1404983486238534
3.1404695970695973
3.140489945155393
3.1405036496350367
3.1404757741347904
3.1404654545454544
3.140442831215971
3.140426811594203
3.1403992766726945
3.140389891696751
3.140371171171171
3.1403762589928057
3.140411490125673
3.140367025089606
3.140359212880143
3.140385
3.1404249554367203
3.140417793594306
3.1404035523978684
3.140346808510638
3.1403341592920353
3.1403081272084807
3.1402603174603176
3.1402661971830987
3.140256590509666
3.1403094736842103
3.140294220665499
3.140288111888112
3.1402966841186735
3.1403045296167247
3.1403234782608695
3.140338888888889
3.140357712305026
3.1403377162629758
3.140332297063903
3.1403296551724136
3.140314629948365
3.1403209621993127
3.140338936535163
3.14033698630137
3.1402782905982907
3.1402778156996587
3.1402371379897787
3.1402034013605444
3.1401738539898134
3.140164745762712
3.1401874788494077
3.140258783783784
3.14030826306914
3.140277441077441
3.1402413445378152
3.1402536912751677
3.1402499162479063
3.140265551839465
3.1402477462437397
3.140242
3.140264891846922
3.1402252491694354
3.1402421227197346
3.1402807947019866
3.1402988429752066
3.140273267326733
3.140322899505766
3.140370394736842
3.140346141215107
3.140386885245902
3.1403698854337154
3.1403522875816994
3.1403804241435562
3.140357654723127
3.1403108943089433
3.140285064935065
3.140276823338736
3.1402485436893204
3.140270759289176
3.1402787096774194
3.140285346215781
3.1402495176848872
3.140243980738363
3.140267948717949
3.1402304
3.14025303514377
3.1402564593301436
3.140268152866242
3.140305882352941
3.1402977777777776
3.14029793977813
3.1403012658227847
3.1402748815165875
3.140270662460568
3.140283464566929
3.140295597484277
3.1403284144427
3.140346081504702
3.1403549295774646

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值