Kezdőoldal » Számítástechnika » Programozás » Hogyan kell c++ ban megoldani...

Hogyan kell c++ ban megoldani azt, hogy 10 ből egy számot véletlenül válaszon?

Figyelt kérdés

Win 32 alkalmazásra.

Úgy mint a lottózásnál ott is véletlenül van.De nem hiszem el,hogy valami csak úgy véletlenül történjen.Ha tudnánk minden információt akkor ugye megtudnák mondani,hogy melyiket fogják kihúzni,vagy nem?


2011. szept. 27. 17:20
 1/2 anonim ***** válasza:

A C++ standard library is tartalmaz véletlenszám generálásra függvényeket: rand, és srand.


Szoftveresen természetesen nem lehet "igazi" véletlenszámokat generálni, ugyanis a szoftver algoritmusokból áll, egy algoritmus jellemzője meg az, hogy determinisztikus. Így, ha ismered a bemenetét, ill. magát az algoritmust, akkor meg tudod pontosan mondani a kimenetet. A szoftveresen generált véletlenszámokat ezért pszeudo-random számoknak hívják, mivel az állapotuk ismeretében megjósolható a kimenet.

A valódi véletlen számokat speckó hardverrel generálják, pl. a kvantumjelenségeket felhasználva, ugyanis itt már elvileg is kizárható annak a lehetősége, hogy megjósoljuk a kimenetet.

Lottóhúzást nem szoktam nézni, de mikor utoljára láttam, úgy rémlik, hogy valami kompresszor nyomatta a levegőt egy gömb belsejébe, és a számokat tartalmazó könnyű műanyaggömbök meg szálldostak össze-vissza, amíg az egyik ki nem esett egy lyukon. Még azelőtt pedig kézzel húzták ki egy gömbből, amit előtte jó sokszor körbeforgattak.


Ugye itt első megközelítésben még lehetségesnek tűnik, hogy alapvető kinematikai összefüggések alapján megjósoljuk a kimenetet, viszont ha megpróbáljuk, azt fogjuk tapasztalni, hogy mégsem működik.

Itt lép a képbe megint a kvantummechanika, illetve a dinamikai rendszerek viselkedése. Előbbivel kapcsolatban elég annyi, hogy a Heisenberg-féle határozatlansági elv értelmében nem mérhető meg egy részecskét leíró minden változó tetszőleges pontossággal. Utóbbi rendszerekre meg az a jellemző, hogy ugyan determinisztikusan viselkednek, de a kezdőfeltételek legkisebb változása is elég hamar igen eltérő viselkedésekhez vezet.

És mivel nem tudjuk tetszőlegesen nagy pontossággal meghatározni az összes golyó súlyát, alakját és pozícióját a gömbben(valamennyi bizonytalanság mindig lesz a mérésben, még ha néhány mikrogramm és nanométer is, ezt biztosítja a határozatlansági elv), valamint nem tudjuk tetszőleges pontossággal leírni a gömbbe áramló levegőrészecskék pályáját(vagy akár a gömböt forgató ember pontos mozdulatait),

ezért azt fogjuk tapasztalni, hogy igen hamar el fog térni a valóságban tapasztalt viselkedés attól, mint amit mi a modellünk alapján kiszámoltunk.

Ezért a lottóhúzás valóban véletlenszerűen történik.(azt persze nem állítom, hogy nem lehet és nem is szokták manipulálni, de maga az elv, ahogy kihúzzák, az valódi véletlenszerűséget biztosít.)

2011. szept. 27. 19:12
Hasznos számodra ez a válasz?
 2/2 anonim ***** válasza:

Itt válaszolok a privátra: HA ismered az algoritmust, és HA ismered a jelen pillanatbeli állapotát, akkor igen, meg tudod mondani.

De 2 gond van:(illetve több is, de azt majd később).

1.Nem ismered az algoritmust.

2. Nem tudod, hogy milyen állapotban van épp, azaz nem tudod azt a kezdőértéket, amivel inicializálták, bővebben lásd megint c++ srand() paramétere, az úgynevezett seed.

Szóval még ha ismernéd is az algoritmust, azt az úgynevezett seed-et biztos nem nyomják oda a kezedbe, + ugye azt sem tudnád, hány random szám lett már generálva az inicializálás óta.


További problémák: igen valószínűtlen, hogy egy pénzre menő lottójátékot egy egyszerű rand() vagy srand() működtessen, ilyen amatőr hibát nem követnek el. Bár sosem próbáltam ilyesmit üzemeltetni, de gyanítom, hogy nem is kapna rá engedélyt a szerencsejáték-felügyelettől a delikvens, aki így akarná a véletlenszerűséget megoldani.

Ráadásul a célhardvereknek annyira nem is vészes az áruk:

[link]

Mint láthatod, 1000 dolcsi alatt már kapható hardveres random generátor.(gugli 3. találat, sztem ha sokat keresgél az ember, talál jóval olcsóbbat is)

Egy szó, mint száz, ne akarjál lottón csítelni, mert:

1. sokkal de sokkal nehezebb és körülményesebb megszervezni, mint azt gondolnád

2. ráadásul teljesen rossz irányba puhatolózol, a véletlen számok megjósolása ebben az esetben zsákutca

3. ha lebuksz(márpedig le fogsz, mert ki az a hülye, akinek ne tűnne fel, hogy állandóan eltalálod a nyerőszámot), mész a böribe, az meg nem valami fasza hely.

2011. szept. 28. 21:05
Hasznos számodra ez a válasz?

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!