- Sony Xperia 1 VII - Látod-e, esteledik
- iPhone topik
- Samsung Galaxy A56 - megbízható középszerűség
- Azonnali navigációs kérdések órája
- Motorola Edge 50 Neo - az egyensúly gyengesége
- MIUI / HyperOS topik
- Google Pixel topik
- Milyen okostelefont vegyek?
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Yettel topik
-
Mobilarena
Új hozzászólás Aktív témák
-
Szabesz
őstag
válasz
bambano #10004 üzenetére
Legyenek változók, hogy jobban lehessen látni a dolgokat:
$a = bcadd("0","10000");
$a2 = pow($a,2);Ekkor ez a feltétel:
(pow(mt_rand(0,$a),2)+pow(mt_rand(0,$a),2))<=$a2
Ami akkor lesz igaz, ha generálódik két olyan legfeljebb
$a
oldalhosszúságú négyzet, amik területének összege legfeljebb egy$a
oldalhosszúságú négyzet területe ($a2
).
Ha az mt_rand nem csak egész számokat adna vissza, akkor az ideális eseteket afrom 0 to $a integrate sqrt($a^2-x^2) dx
integrál adja meg, összes eset pedig az$a2
. Mivel a terület arányok nem változnának, lehet$a=1
az integrálhoz, mert így rögtön a terület aránya jön ki. Az eredmény pedig aπ/4
, ami ~0.785398, de te úgy is felszoroztad 4-gyel, vagyis aπ
az amit látni szeretnél a randomból, ha jól sejtem -
Szabesz
őstag
válasz
bambano #10001 üzenetére
Ugyan nem szoktam PHP-ban programozni, de érdekelt mit is csinál a kód.
Kicsit ki kellett hámozni, mert sok benne a zavaró rész.
Első körben ez egy végtelen ciklus, gondolom valamikor van egy
break;
ami kimaradt.
Veszünk valami limitet, mondjuk 50000 ciklus után kilépünk, és akkor írjuk ki a végeredményt.$total
számolja a ciklusokat,$count
néha növekszik. Pontosan akkor növekszik amikor a kérdéses feltétel igaz lesz.(pow(mt_rand(0,1),2)+pow(mt_rand(0,1),2))<=1
itt a pow teljesen fölösleges, hisz az mt_rand (0,1) paraméterrel pontosan a két szám egyikével térhet vissza: 0-val vagy 1-gyel, amiken a pow nem fog változtatni. Tehát ez akkor lesz igaz, ha két random szám - ami 0 vagy 1 lehet - összege <=1 lesz. Ez három esetben lehetséges: 0+0, 0+1, 1+0. A fennmaradó eset az 1+1 esetén már nem igaz. Ez 3/4=0,75.
A módosított feltétel esetén (<1) pedig a lehetséges 4 esetből csak egy lesz igaz: a 0+0. Ez pedig így 1/4=0,25.A végeredmény ezt számolja ki, csak valamiért a
$count/$total
értéket felszorzod 4-gyel. Ezért lesz ugye a két esetben nálad 4*0,25=1, illetve 4*0,75=3 körüli értékek. -
Szabesz
őstag
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- Azonnali készpénzes nVidia RTX 3000 sorozat videokártya felvásárlás személyesen / csomagküldéssel
- Telefon felvásárlás!! Honor Magic6 Lite, Honor Magic6 Pro, Honor Magic7 Lite, Honor Magic7 Pro
- LG 39GS95UE - 39" Ívelt OLED / QHD 2K / 240Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
- DELL PowerEdge R630 rack szerver - 2xE5-2680v4 (28c/ 56t, 2.4/3.3GHz), 128GB RAM, 10G, áfás szla
- DELL Precision 5560 i7-11850H 16GB 512GB T1200 FHD+ 1 év garancia
Állásajánlatok
Cég: FOTC
Város: Budapest