Kezdőoldal » Számítástechnika » Programozás » Egy programozó bármilyen...

Egy programozó bármilyen programot megtud csinálni fejből a számítógépre ha megtanulja a C++ nyelvet?

Figyelt kérdés
2012. márc. 6. 18:16
1 2
 11/17 anonim ***** válasza:
0%
Hát ha te így gondolod.. :D Akkor nincs sok értelme erről tovább beszélni :D
2012. márc. 7. 23:03
Hasznos számodra ez a válasz?
 12/17 iostream ***** válasza:
Nézd, ha szerinted az emberi input determinisztikus, akkor te a szabad akaratot is cáfolod. De ez túlmutat a programozás témakörén, programozásban el szoktuk fogadni, hogy a user input kvázi véletlenszerű, főleg ha egy másik programnak adják épp be, ami izoláltan fut a miénktől.
2012. márc. 7. 23:53
Hasznos számodra ez a válasz?
 13/17 2xSü ***** válasza:

Előbb definiálni kellene a véletlen fogalmát. A magyar név nagyon beszédes: Véletlen az, amiről nem tudunk hogyan vélekedni.


Innen már következik, hogy megfelelő algoritmus választása az egész. Pl. egy Mersenne twister algoritmus esetén az ismétlési periódus hossza: 2^19937 − 1 . Ezzel 32 bites véletlenszámokat lehet előállítani. A generátor által adott számsorozatok nagyon nagy egyezést adnak a tényleges véletlen eloszlásokkal.


Ha a program indulásakor megfelelő módon inicializálod a generátort – mondjuk az idővel ezredmásodperc pontossággal + a lementett utolsó generált számokból –, akkor több százezer generált szám birtokában sem tudsz következtetni a következő számra. Ilyen módon a valódi véletlennel egyenértékű generált számsort kapsz.


Többszálú, főleg netes környezetben meg aztán végképp így van.


Nincs gond a véletlen számokkal, csak megfelelő felhasználásra megfelelő algoritmust kell választani. Pl. netes környezetben a random.org vagy hasonló oldalal is meg lehet fejelni az egészet – mondjuk x000 sorsolt szám után újra inicializálod a generátort a random.org-ból vett értékkel –, ami meg valódi véletlent ad, hiszen az légköri elektromos zaj alapján generál számot.


Persze ha nem inicializálod a véletlenszám-generátort, akkor valóban fennáll az a jelenség, hogy minden indításkor ugyanazt a számsort fogja neked generálni. De ez egyszerű programozási hiba csak.

2012. márc. 8. 09:16
Hasznos számodra ez a válasz?
 14/17 iostream ***** válasza:
31%
A véletlen egy elég jól definiált fogalom, azt jelenti, hogy nem lehet előre megjósolni semmilyen algoritmussal. Tehát bármilyen algoritmust választasz, az pszeudo-véletlen lesz. Amit én mondtam az a userinput alapján dönt (most mondhattam volna azt is, hogy a netről lehúz egy népszerű weboldal legutóbbi 10 kommentjét és hasheli őket, az is véletlen lesz, ráadásul egyenletes eloszlású).
2012. márc. 8. 11:35
Hasznos számodra ez a válasz?
 15/17 A kérdező kommentje:
Ha én bele nézek hogy,hogyan működik c++ ban az egyik véletlen-szám generáló függvény akkor meg fogom tudni mondani,hogy milyen számot fog vissza adni?
2012. márc. 9. 12:19
 16/17 iostream ***** válasza:
36%
Igen. De kipróbálhatod: ugyanazzal a számmal inicializálva a véletlenszámgenerátort (nem az idővel) mindig ugyanazt a sorozatot adja vissza.
2012. márc. 9. 13:53
Hasznos számodra ez a válasz?
 17/17 2xSü ***** válasza:

iostream: Azért kicsit vitatkoznék. Ez nem teljesen igaz. Akkor igaz, ha ismered az algoritmust ÉS az inicializáló értéket, valamint a sorsolások számát, illetve bizonyos algoritmusok esetén ez utóbbi sem kell, ha teljes értékkészlettel dolgozol.


Persze ha belekutatsz a memóriába, akkor bármilyen véletlenszám-generátorral kreált értéket előre lehet jelezni, hiszen mind matematikai műveletekkel képződik, amit a megfelelő információk birtokában (adatok és algoritmus) te is el tudsz végezni.


Viszont ha van egy program, ami mondjuk ezredmásodperces idővel inicializálja a véletlenszám-generátort és mondjuk kockadobásokat szimulál, akkor pusztán az eddig kisorsolt számok alapján nem igazán lehet megjósolni az eredményt, még akkor sem, ha ismered a generátor algoritmusát. Persze ha kellően sok – az ismétlődési hosszat megközelítő darabszámban – generáltatsz vele számokat, akkor már lehet következtetni a számodra nem látható információkra.


Viszont az is igaz, hogy ha nincs inicializálva a véletlenszám generátor, akkor minden indulás után ugyanazokat a számokat fogja dobni.

2012. márc. 9. 15:05
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!