Znn3bq.jpeg
²é¿´: 3326  |  »Ø¸´: 12
±¾Ìû²úÉú 1 ¸ö Ä£ÄâEPI £¬µã»÷ÕâÀï½øÐв鿴

zyj8119

ľ³æ (ÖøÃûдÊÖ)

[½»Á÷] ¡¾×ªÌû¡¿ÃÉÌØ¿¨ÂÞËã·¨¼ÆËãÔ²ÖÜÂÊ ÒÑÓÐ7È˲ÎÓë

ÃÉÌØ¿¨ÂÞËã·¨µÄÔ­ÀíÊÇ£º¿¼ÂÇÒ»¸öÕý·½ÐκÍËüµÄÄÚÇÐÔ²¡£

ÔÚÕý·½ÐÎÄÚËæ»úȡһµã£¬ÆäÂäÔÚÔ²ÄڵĸÅÂÊÓ¦¸ÃÊǶþÕߣ¨Ô²ºÍ·½£©µÄÃæ»ý±È¡£

ÎÒµÄËã·¨ÊÇÈ¡   R=32767,ÔÚµÚÒ»ÏóÏÞ×÷²ÉÑù¡£
CODE:
#include   
#include   
#include   
using   namespace   std;

typedef   int   DWORD;

double   PI(   DWORD   dwCount   /*²âÊÔ´ÎÊý*/   )
{

double   R   =   (1 < <15)-1;   ;   //   Ñ¡È¡¿ÉÄܲúÉúµÄËæ»úÊýÖеÄRAND_MAXÖµ×÷ΪԲ°ë¾¶   
DWORD   count   =   0;

srand(   (unsigned)time(   NULL   )   );   
/*   
Seed   the   random-number   generator   with   current   time   so   that
the   numbers   will   be   different   every   time   we   run.
*/
      
for(   DWORD   i=0;i {
int   x   =   rand();     //   rand()·µ»ØÒ»¸ö0µ½2^15-1Ö®¼äµÄ·Ç¸ºÕûÊý¡£

int   y   =   rand();   

//   ÓÉÓÚÉÏÃæÊ¹Óà  srand()   ÅäÖÃÁËеÄËæ»úÊýÖÖ×Ó£¬yµÄÖµÒ»°ãºÍx²»»áÏàͬ¡£

//   ÔÚµÚÒ»ÏóÏ޵ı߳¤Îª   R   µÄÕý·½ÐÎÄÚËæ»ú²úÉúÒ»¸öµãP(x,y)£¨xΪÆäºá×ø±ê£¬yΪÆä×Ý×ø±ê£©

double   r   =   sqrt(   x*x   +   y*y   );   //   ¼ÆËãµãP(x,y)¾àÔ­µãµÄ¾àÀë

if(   r {
count++;     //   ÂäÈëÔ²ÄÚÒ»´Î¼ÆÊý¼ÓÒ»
}
}

return   4.0*count/dwCount;   

/*   ¸ù¾ÝÃÉÌØ¿¨ÂÞËã·¨µÄÔ­Àí£¬ÓмÆË㹫ʽ   P   =   (S_cir)/(S_squ)

±¾ÌâÖÐËæ»úµãÂäÔÚÔ²ÄڵĸÅÂÊ   P   =   count/dwCount;   

Ô²Ãæ»ý   S_cir   =   PI*R*R/4(¿¼ÂǵÚÒ»ÏóÏÞ)£¬Õý·½ÐÎÃæ»ý   S_squ   =   R*R   ¡£*/

}

void   main()
{
DWORD   number;

cout   < <   "Input   the   times   of   the   test   with   the   value   of   PI:\t ";
cin   > >   number; //   ÊäÈë²âÊÔµÄÂÖÊý,²»Òª³¬¹ý65535

double   total=0;

for(int   i=0;   i {
total+=PI(number);   //   ¼ÆËãnumber¸öPIÖµµÄºÍ
}

cout   < <   "\nThe   value   of   PI   approximately   calculated   is   :\t ";

cout   < <   total/number   < <   endl   < <   endl;   //   Êä³ö   PI   µÄƽ¾ùÖµ

}

ר¼Ò½â´ð£º

Õâ¸ö³ß´çÊÇÄ£ºýµÄ£¬»¹ÊÜ¿âÉè¼ÆµÄÓ°Ïì¡£ÔÚPDP-11^[10]»úÆ÷ÉÏÔËÐеĽöÓеÄCʵÏÖÖУ¬

ÓÐÒ»¸ö³ÆÎªrand()µÄº¯Êý¿ÉÒÔ·µ»ØÒ»¸ö£¨Î±£©Ëæ»ú·Ç¸ºÕûÊý¡£

PDP-11ÖÐÕûÊý³¤¶È°üÀ¨·ûºÅλÊÇ16룬Òò´Ërand()·µ»ØÒ»¸ö0µ½2^15-1Ö®¼äµÄÕûÊý¡£

µ±CÔÚVAX-11ÉÏʵÏÖʱ£¬ÕûÊýµÄ³¤¶È±äΪ32볤¡£ÄÇôVAX-11ÉϵÄrand()º¯Êý·µ»ØÖµ·¶Î§ÊÇÊ²Ã´ÄØ£¿

¶ÔÓÚÕâ¸öϵͳ£¬¼ÓÀû¸£ÄáÑÇ´óѧµÄÈËÈÏΪrand()µÄ·µ»ØÖµÓ¦¸Ãº­¸ÇËùÓпÉÄܵķǸºÕûÊý£¬

Òò´ËËüÃǵÄrand()°æ±¾·µ»ØÒ»¸ö0µ½2^31-1Ö®¼äµÄÕûÊý¡£¶øAT&TµÄÈËÔò¾õµÃÈç¹ûrand()º¯Êý

ÈÔÈ»·µ»ØÒ»¸ö0µ½2^15Ö®¼äµÄÖµ   Ôò¿ÉÒÔºÜÈÝÒ׵ؽ«PDP-11ÖÐÆÚÍûrand()Äܹ»·µ»ØÒ»¸öСÓÚ

2^15µÄÖµµÄ³ÌÐòÒÆÖ²µ½VAX-11ÉÏ¡£

Òò´Ë£¬ÏÖÔÚ»¹ºÜÄÑд³ö²»ÒÀÀµÊµÏÖ¶øµ÷ÓÃrand()º¯ÊýµÄ³ÌÐò¡£
»Ø¸´´ËÂ¥

» ÊÕ¼±¾ÌûµÄÌÔÌûר¼­ÍƼö

ѧϰ·½·¨ matlab

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ¡£
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

yalefield

½ð³æ (ÎÄ̳¾«Ó¢)

ÀϺºÒ»Ã¶

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
ghcacj(½ð±Ò+1):лл 2010-09-09 12:45:55
1970Äê´ú£¬Ê±ÐË¡°Î±Â롱
1980Äê´ú£¬Ê±ÐË¡°Î±Ëæ»ú¡±
......
2010Äê´ú£¬Ê±ÐË¡°Î±Ä
2Â¥2010-09-09 12:41:22
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

zyj8119

ľ³æ (ÖøÃûдÊÖ)

ÒýÓûØÌû:
Originally posted by yalefield at 2010-09-09 12:41:22:
1970Äê´ú£¬Ê±ÐË¡°Î±Â롱
1980Äê´ú£¬Ê±ÐË¡°Î±Ëæ»ú¡±
......
2010Äê´ú£¬Ê±ÐË¡°Î±Ä

ʲôÒâ˼£¿
ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ¡£
3Â¥2010-09-09 12:45:26
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

maomao1210

½ð³æ (ÕýʽдÊÖ)

¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
lei0736(½ð±Ò+1):ºÇºÇ 2010-09-09 14:59:30
ÒýÓûØÌû:
Originally posted by zyj8119 at 2010-09-09 12:45:26:

ʲôÒâ˼£¿

¸çÃÇ£¬ÂäÎéÁ˰ɣ¬Î±Äï¶¼²»¶®Ñ½£¿
4Â¥2010-09-09 14:56:27
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

zyj8119

ľ³æ (ÖøÃûдÊÖ)

ÒýÓûØÌû:
Originally posted by maomao1210 at 2010-09-09 14:56:27:

¸çÃÇ£¬ÂäÎéÁ˰ɣ¬Î±Äï¶¼²»¶®Ñ½£¿

α´úÂë±È½ÏºÃ£¬ºÇºÇ¡£
ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ¡£
5Â¥2010-09-09 17:32:03
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

yahoohoo

Ìú¸Ëľ³æ (ÖøÃûдÊÖ)

¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
lei0736(½ð±Ò+5):лл 2010-09-09 19:29:15
Monte Carlo Ä£ÄâÖÐËæ»úÊýµÄÑ¡ÔñÊǺÜÖØÒªµÄ£¬ÏµÍ³×Ô´øµÄÒ»°ã»¹ÊDz»ÒªÓá£ÍƼöʹÓà Mersenne Twister¡£

int main() {
  prng.init(); // random number generator initialization
  const int N = 1048576; // 2^10, MC cycles
  int K = 0; // counter
  for (int i = 0; i < N; ++i)
    if (pow(prng.gen_open0_open1(), 2) + pow(prng.gen_open0_open1(), 2) <= 1) ++K;
  double PI = (double)K/(double)N * 4.0; // estimate of $\pi$
  return 0;
}
6Â¥2010-09-09 18:49:11
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

zyj8119

ľ³æ (ÖøÃûдÊÖ)

ÒýÓûØÌû:
Originally posted by yahoohoo at 2010-09-09 18:49:11:
Monte Carlo Ä£ÄâÖÐËæ»úÊýµÄÑ¡ÔñÊǺÜÖØÒªµÄ£¬ÏµÍ³×Ô´øµÄÒ»°ã»¹ÊDz»ÒªÓá£ÍƼöʹÓà Mersenne Twister¡£

int main() {
  prng.init(); // random number generator initialization
  const int N = 1048576; / ...

ѧϰÁË¡£¡£¡£¡£¡£
ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ¡£
7Â¥2010-09-09 18:50:49
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

yahoohoo

Ìú¸Ëľ³æ (ÖøÃûдÊÖ)

¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
ghcacj(½ð±Ò+8, Ä£ÄâEPI+1):лл 2010-09-09 20:50:01
ÕâÀïµÄMonte CarloË㷨ʵ¼ÊÉÏÊÇËùνµÄ¼òµ¥³éÑù£¬¼´ Simple Sampling¡£ËüµÄºËÐÄ˼ÏëÊÇÈËΪ²úÉú´óÁ¿µÄµã£¬´Ó¶ø¾¡¿ÉÄܵرéÀúÏà¿Õ¼ä¡£¾ÍÕâ¸öÀý×Ó¶øÑÔ£¬ÎÒÃDzúÉú´óÁ¿µÄÔÚ $x \in (0, 1)$Óë $y \in (0, 1)$ÇøÓò¾ùÔÈ·Ö²¼µÄµã£¬ÆäÖб» $x^2+y^2=1$°üÀ¨µÄËùÓеã¾ÍÊÇÎÒÃÇËù¸ÐÐËȤµÄÏà¿Õ¼äµÄ×Ó¼¯£¬ÄÇôÕâÑùµÄµãÔ½¶à£¬ÎÒÃǶԸÃÏà¿Õ¼äµÄÃèÊöµÄͳ¼Æ¾«¶È¾ÍÔ½¸ß£¬ÔÚ¼ÆËãÉÏÕâ±íÏÖΪ MCÑ­»·Ô½¶à£¬ÎÒÃǵõ½µÄ¹À¼ÆÖµ¾ÍÔ½±Æ½üÕæÊµÖµ£¨µ±È»£¬ÕâÐèÒª¾ùÔÈ·Ö²¼µÄÎ±Ëæ»úÊýÉú³ÉÆ÷£©¡£

ÕâÊÇMCÈëÃŵÄÒ»¸ö¼òµ¥Àý×Ó£¬¶øÊµ¼ÊµÄ·Ö×ÓÄ£ÄâÖУ¬ÓÉÓÚ×ÔÓɶÈÌ«¶à£¬Ïà¿Õ¼äÌ«´ó£¬ÉÏÊöµÄ¼òµ¥³éÑùËã·¨¶ÔÏà¿Õ¼äµÄËÑË÷ЧÂʽϵͣ¬ÒòΪÎÒÃÇʹÓÃËùνµÄÖØÒªÐÔ³éÑù£¬¼´ Important Sampling¡£
8Â¥2010-09-09 20:25:17
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

yahoohoo

Ìú¸Ëľ³æ (ÖøÃûдÊÖ)

¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
Сľ³æ(½ð±Ò+0.5):¸ø¸öºì°ü£¬Ð»Ð»»ØÌû½»Á÷
ghcacj(½ð±Ò+8):лл 2010-09-09 22:47:00
Õâ¸öÌû×ÓÒýÉê³öµÄÒ»¸öÎÊÌâ¾ÍÊÇMonte CarloÄ£ÄâÖÐÎ±Ëæ»úÊýÉú³ÉÆ÷ ( Pseudo Random Number Generator ) µÄÑ¡ÔñÎÊÌâ¡£

ÆäʵPiµÄ¼ÆËãÕâһʵÀý±ã¿ÉÒÔÓÃÀ´¼ìÑéÎÒÃÇÑ¡ÔñµÄPRNGÊÇ·ñºÏÊÊ¡£Ê¹ÓÃÒ»¸öºÃµÄPRNG£¬Ëæ×ÅMCÑ­»·´ÎÊýµÄÔö´ó£¬¹À¼ÆÖµÓ¦¸ÃÔ½À´Ô½±Æ½üÕæÊµÖµ¡£

ÁíÒ»¸ö¼ìÑéPRNGÖÊÁ¿µÄ¼òµ¥·½·¨ÊÇ£ºÔÚµ¥Î»Á¢·½ÌåÄÚ²úÉú´óÁ¿µÄËæ»úµã(x, y, z)£¬¼ì²éµãÔÚÈýλ¿Õ¼äµÄ·Ö²¼Çé¿ö£¬Èç¹ûÃ÷ÏÔ³öÏÖÓÐÐòµÄ½á¹¹£¬ÄǸÃPRNGÔò²»ÊʺÏÓÃÓÚMCÄ£Äâ¡£
9Â¥2010-09-09 21:46:47
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

zyj8119

ľ³æ (ÖøÃûдÊÖ)

monte carlo¼ÆËãÔ²ÖÜÂʵÄmatlab´úÂë

ÒýÓûØÌû:
Originally posted by yahoohoo at 2010-09-09 21:46:47:
Õâ¸öÌû×ÓÒýÉê³öµÄÒ»¸öÎÊÌâ¾ÍÊÇMonte CarloÄ£ÄâÖÐÎ±Ëæ»úÊýÉú³ÉÆ÷ ( Pseudo Random Number Generator ) µÄÑ¡ÔñÎÊÌâ¡£

ÆäʵPiµÄ¼ÆËãÕâһʵÀý±ã¿ÉÒÔÓÃÀ´¼ìÑéÎÒÃÇÑ¡ÔñµÄPRNGÊÇ·ñºÏÊÊ¡£Ê¹ÓÃÒ»¸öºÃµÄPRNG£¬Ëæ×ÅMCÑ­»· ...

ÕâÊÇÒ»¸ö¹ØÓÚÈçºÎÇópiµÄmatlabС³ÌÐò£¬Óõ½ÁËMonte CarloµÄ˼Ï룬ÎÒ¸öÈ˾õµÃËùνMC·½·¨¾ÍÊÇÓøÅÂʵÄ˼ÏëÈ¥½â¾öÎÊÌ⣬Ö÷Òª¾ÍÊÇ¿¿¼ÆËã»úÉú³ÉµÄÎ±Ëæ»úÊýÀ´¶ÔÒ»¸öËæ»úʼþ¶à´Î·ÂÕæµÃµ½ËùÇó½âµÄ½üËÆÖµ¡£
ÏÂÃæÊǸö¸Ä½øµÄ³ÌÐò£¬³ä·ÖÀûÓÃÁËMATLABÇó½â¾ØÕóµÄÓÅÊÆ£º
CODE:
Nrand = 8192;  % Largest size of an array in Student Version of Matlab
   Nmax  = input('How Many Loops (of 8192 Random Numbers Each) ');
   NTrand = 0;
   NInside = 0;
   for nloops=1:Nmax
      Xrand = rand(1,Nrand);        % Generates 8192 Random XY Points
      Yrand = rand(1,Nrand);
      Rrand = Xrand.^2 + Yrand.^2;  % Finds the radius for all 8192 random points
      CheckValue = Rrand<=1.;  % Has 1 if True & 0 if False for each element
      NInside = NInside + sum(CheckValue);  % Total number of Points Inside
      NTrand = NTrand + Nrand;              % Total number of Points Generated
   end
   disp(['Total Generated: ' num2str(NTrand) ' Inside Pts: ' ...
      num2str(NInside)]);
   piapprox = 4*NInside/NTrand;
   pierror = 4*sqrt(NInside)/NTrand;
   disp(['  Approximation to pi = ' num2str(piapprox) ...
      ' With Error ' num2str(pierror)]);

ºÃºÃѧϰ£¬ÌìÌìÏòÉÏ¡£
10Â¥2010-09-11 10:25:56
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
Ïà¹Ø°æ¿éÌø×ª ÎÒÒª¶©ÔÄÂ¥Ö÷ zyj8119 µÄÖ÷Ìâ¸üÐÂ
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] ±¾ÈËÅ®º¢ +7 ºðºð£¬ 2026-04-10 9/450 2026-04-11 14:45 by ACS Nano¡ª¡ª
[¿¼ÑÐ] 305Çóµ÷¼Á +5 77Qi 2026-04-07 5/250 2026-04-11 11:45 by zhq0425
[¿¼ÑÐ] 285Çóµ÷¼Á +8 ¶ñ·¨´ó¶þµÄÆøÎ¶ß 2026-04-05 11/550 2026-04-11 11:28 by ×ÏêØ×ÏÆå
[¿¼ÑÐ] µ÷¼ÁÇóÊÕÁô +18 ¹ûÈ»ÓÐÎÒ 2026-04-10 19/950 2026-04-11 11:06 by may_ÐÂÓî
[¿¼ÑÐ] 085500Çóµ÷¼Á²ÄÁÏ +10 Ò×11122 2026-04-09 10/500 2026-04-11 10:39 by maddjdld
[¿¼ÑÐ] 085404 293Çóµ÷¼Á +9 ÓÂÔ¶¿â°®314 2026-04-06 10/500 2026-04-11 10:36 by ×ÏêØ×ÏÆå
[¿¼ÑÐ] 311Çóµ÷¼Á +13 xypÏë¶ÁÊé 2026-04-10 14/700 2026-04-11 09:41 by Öí»á·É
[¿¼ÑÐ] 263ÄÜÔ´¶¯Á¦×¨Ë¶Çóµ÷¼Á +3 ¼Ó´óºÅ·¹ºÐ´ü 2026-04-10 3/150 2026-04-10 22:23 by 286640313
[¿¼ÑÐ] ¼ÆËã»úÀàÇóµ÷¼Á£¬22408-274·Ö +7 Éϰ¶deС³æ 2026-04-09 8/400 2026-04-10 19:56 by fxue1114
[¿¼ÑÐ] 301Çóµ÷¼Á +6 ¾²¾²ÏëÏë 2026-04-05 6/300 2026-04-10 09:15 by Delta2012
[¿¼ÑÐ] ±¾¿ÆÎ÷¹¤´ó 0856 324Çóµ÷¼Á +10 wysyjs25 2026-04-09 11/550 2026-04-10 08:37 by 5268321
[¿¼ÑÐ] ²ÄÁÏ»¯¹¤×Ü·Ö334Çóµ÷¼Á +16 Riot2025 2026-04-08 17/850 2026-04-09 20:19 by maddjdld
[¿¼ÑÐ] µ÷¼Á +19 2261744733 2026-04-08 19/950 2026-04-09 19:11 by vgtyfty
[¿¼ÑÐ] ²ÄÁϵ÷¼Á +11 Ò»ÑùYWY 2026-04-07 11/550 2026-04-07 15:13 by shdgaomin
[¿¼ÑÐ] 297·Ö083200ÇóÖú +9 aekx 2026-04-05 9/450 2026-04-06 20:57 by flysky1234
[¿¼ÑÐ] Ò»Ö¾Ô¸ºÓ±±¹¤Òµ´óѧ²ÄÁϹ¤³Ì£¬³õÊÔ344Çóר˶µ÷¼Á +6 15933906766 2026-04-05 6/300 2026-04-06 13:21 by Î޼ʵIJÝÔ­
[¿¼ÑÐ] 346·ÖµÄÉúÎïÓëÒ½Ò©08600Çóµ÷¼Á +6 ³£ÓêÑôÉϰ¶ 2026-04-05 7/350 2026-04-06 12:36 by lys0704
[¿¼ÑÐ] 296Çóµ÷¼Á +3 Íô£¡£¿£¡ 2026-04-05 4/200 2026-04-05 20:13 by à£à£à£0119
[¿¼ÑÐ] 08ר˶275µ÷¼Á +5 AaAa7420 2026-04-05 5/250 2026-04-05 18:01 by jkddd
[¿¼ÑÐ] 325Çóµ÷¼Á +4 ´º·ç²»½èÒâ 2026-04-04 4/200 2026-04-04 22:08 by à£à£à£0119
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û