• Nem Talált Eredményt

A véletlen számok egy alkalmazásáról Kísérlet, labor, műhely

N/A
N/A
Protected

Academic year: 2022

Ossza meg "A véletlen számok egy alkalmazásáról Kísérlet, labor, műhely"

Copied!
3
0
0

Teljes szövegt

(1)

Lebegyev alkoholból, a német Reppe pedig acetilénből nyerte. 1928-ban Le- begyev-féle butadiénből még csupán 2 kg műgumit sikerült előállítani, 1932-től fogva a z o n b a n már ipari méretekben gyártották. Később megjelent a polikloro- prén kaucsuk és az olyan szintetikus kaucsuk-féleségek, amelyekhez két vagy t ö b b nyersanyag kopolimerizációjával jutnak.

Ezáltal sikerült túllépnünk a természet leutánzásának szakaszán; napjainkban m á r értékes tulajdonság-kombinációjú, az ipar minden elvárásával megfelelő ú j műgumikat állítanak elő.

Löwy Dániel Hints Miklós

Kísérlet, labor, műhely

A valós helyzetek modellálásában, különféle jelenségek szimulációjában n a g y o n fontos a valóságnak megfelelő véletlenszerű viselkedés. Ezeket a helyzeteket véletlenszerűen létrehozott számok biztosítják, ezeket nevezzük véletlen számoknak. De a véletlen számokat használhatjuk például terület- számításra is, ami első pillanatra talán furcsának tűnhet.

A Pascal nyelv Random függvényével generálhatunk a [0,1) intervallumba e s ő véletlen számokat, a Random(ra) függvénnyel pedig a [0,m) intervallumba e s ő egész számokat. Ezek egyenletes eloszlásúak. Az az igazság, hogy azok a számok amelyeket számítógéppel állítunk e l ő valamilyen szabály segítségével n e m teljesen véletlenek, ezért ezeket pszeudovéletleneknek nevezzük. De ezek is alkalmazhatók véletlen jelenségek megközelítő leírására.

Lássuk, h o g y a n használhatjuk a véletlen számokat területszámításra. Az- ido- mot, amelynek területét keressük, egy ismert területű téglalapba zárjuk, majd véletlenszerűen pontokat generálunk amelyek a téglalapba esnek. Az i d o m belsejébe esett p o n t o k száma és az összpontszám aránya az idom és a téglalap területének arányához közel álló érték. Innen könnyen megkapható az i d o m területe. (Ez talán n e m is olyan meglepő, ha arra gondolunk például, hogy két hasonló háromszög területének aránya egyenlő a magasságok négyzetének arányával.) Minél t ö b b pontot generálunk, és ezek minél e g y e n l e t e s e b b eloszlásúak, annál pontosabb területéitéket kaphatunk. Ez a módszer a Monté Carlo-móászex néven ismert. (Nevét a kaszinóiról híres Monté Carlóról kapta, ahol a véletlennek igencsak fontos szerep jut.)

Első programunk bekéri egy kör adatait (a középpont koordinátáit és a sugarát), lerajzolja a képernyőre, amely teljes egészében képezi a téglalapot.

Ezután véletlen pontokat generál, s ezeket ki is rajzolja a képernyőre, közben ezresével a számukat is kiírja tájékozódásul. Bármely billentyű lenyomására a

A v é l e t l e n számok egy alkalmazásáról

(2)

kísérlet befejeződik, a program kiírja v é g e r e d m é n y k é n t a p o n t o k számát, valamint a kapott területértéket.

A k é p e r n y ő n jól láthatni, hogy a p o n t o k mennyire egyenletesen töltik ki a téglalapot.

program terl;

uses graph,Crt;

var x,y,r,i,j, b, k: longint;

Gd, Gm:integer;

s :string;

c :char;

BEGIN

ClrScr;

Writeln (' Kör területe - Monté Carlo-módszerrel' ) ; Write ('x, y, r =' ) ; Readln (x, y, r) ;

b : = 0 ; k : = 0 ; Gd:=Detect;

Initgraph (Gd, Gm/ c:\tp\bgi' ) ; Circle (x,y,r);

Randomize;

Repeat

i := Random (GetMaxX+1); j := Random (GetMaxY+1);

if sqr(i-x)+sqr(j-y)< r*r then b:=b+l else k:=k+l;

PutPixel (i, j, GetMaxColor);

if (b+k) mod 1000 = 0 then begin

SetViewPort (GetMaxX-100, 0, GetmaxX, 10, true);

ClearViewPort;

str (k+b, s) ; Outtext (' ' +s) ;

SetViewPort (0, 0, GetmaxX, GetMaxY, true);

end;

until Keypressed; c:=ReadKey;

Closegraph;

Write (' Pontszám = ' , b+k,

' Terület ^ , b/ (b+"k) * (GetMaxX+1) * (GetMaxY+1) : 15 : 4) ; Readln;

END.

É r d e k e s e b b a második program, amely tetszőleges sokszögre végzi el ugyanezt. Mivel itt n e h e z e b b lenne meghatározni képlet segítségével (mint a körnél), mikor van egy pont az idom belsejében, más módszerhez folyamodunk.

A sokszöget kifestjük valamilyen színnel (a programban az alapszínnel), majd a generált véletlen pontokról eldöntjük, hogy milyen színűek, s ezzel azt is, h o g y a sokszög belsejében, vagy azon kívül találhatók. A pontok a képernyőn n e m jelennek meg.

program ter2; { Sokszög területszárnitása Monté Carlo-módszerrel}

uses Graph, Crt;

const max = 50; (Szögek maximális száma)

(3)

var i, j, b, k : longint;

Gd, Gm, n : integer;

s : string;

c : char;

poligon : arrayf 1. . max] of PointType;

BEGIN ClrScr;

WriteLn ('Sokszög területe - Monté Carlo-módszerrel' );

Write (' Szögek száma = ' ) ; Readln (n) ; { n a szögek száma}

For i:= 1 to n do begin

Write ('x, y =' ) ; Readln (poligon[ i] .x, poligon[ i] .y);

end;

b := 0; k := 0; { b belső pontok száma, k külső pontok száma}

Repeat

Gd := Detect;

InitGraph (Gd,Gm/ c:\tp\bgi' ); {'c:\tp\bgi' -t esetleg ki kell cserélni) FillPoly (n, poligon); {lerajzolja a befestett sokszöget}

Randomize;

Repeat

i Random (GetMaxX+1); j := Random (GetMaxY+1);

if GetPixel (i,j) = GetColor then b:=b+l else k:=k+l;

if (b+k) mod 1000 = 0 then { kiir minden ezredik pontszámot}

begin

SetViewPort (GetMaxX-100, 0, GetMaxX, 10, true);

ClearViewPort;

Str (k+b, s) ; Outtext (' ' +s) ;

SetViewPort (0, 0, GetmaxX, GetMaxX, true);

end;

until Keypressed; c:=ReadKey;

Closegraph;

Writeln (' Pontszám = ' , b+k,

' Terület = ' , b/(b+k)* (GetMaxX+1)* (GetMaxY+1):15:4);

Write (' Folytatod (i/n>? '); c := ReadKey;

until Upcase (c) = ' N' ; END.

Ebben a második programban, ha bármilyen billentyűt l e n y o m u n k a program megáll, kiírja az eredményt, de továbbfolytatható a futtattás. Ezt a megállítást akárhányszor elvégezhetjük. így nyomon követhetjük az e r e d m é n y értékének változását a generált p o n t o k számának függvényében.

N é h á n y adat:

— Az e l s ő programot többször lefuttattuk, mindegyik esetben egy-egy 100 egységnyi sugarú kört adva meg. Az eredmények átlaga: 31510,56, a valódi érték két tizedesnyi pontossággal pedig 31415,93-

— A második program eredménye egy olyan négyzet esetében amelynek oldala 100 egység: 10269,83.

Mindkét esetben m i n d e n alkalommal legalább százezer pontot generáltunk.

Kása Zoltán

Hivatkozások

KAPCSOLÓDÓ DOKUMENTUMOK

Néhány évvel később Berzelius, svéd kémikus, sokkal egyszerűbb és átfogóbb vegyjelrendszert hozott nyilvánosságra, amely a későbbiek folyamán célszerűnek bi- zonyult,

A Turbo Pascal lehetőséget ad arra, hogy a többször használható eljárásokat, függvényeket egy külön programegységbe foglaljuk, s tet- szőleges programból csupán

Erre az általánosításra és a hozzákapcsolódó szemléleti modellváltásra akkor van feltétlen szükség, amikor az elektromos energia szállítása nem alacsony frekvencián (pl.

A Nagy Háború során elő is for- dult olyan eset, hogy egy parancsnokot főherceg létére leváltottak az elszenve- dett vereség miatt (József Ferdinánd főherceg leváltása a

De akkor sem követünk el kisebb tévedést, ha tagadjuk a nemzettudat kikristályosodásában játszott szerepét.” 364 Magyar vonatkozás- ban Nemeskürty István utalt

szóház csoport működése annak illusztris példája a mai magyar gyer- mekvédelmi rendszer számára, hogy a gyermekjóléti prevenció egy komplex szolgáltatási

Ennek során avval szembesül, hogy ugyan a valós és fiktív elemek keverednek (a La Conque folyóirat adott számaiban nincs ott az említett szo- nett Ménard-tól, Ruy López de

(Véleményem szerint egy hosszú testű, kosfejű lovat nem ábrázolnak rövid testűnek és homorú orrúnak pusztán egy uralkodói stílusváltás miatt, vagyis valóban