Ha a végtelenségig akarom folytatni az ALÁBBI (leírásban) törtet, azt hogyan lehet véges számú matematikai jelekkel felírni? (a kép lentebb a leírásban ˇˇˇˇ)
"Te arra gondoltál, hogy a PI-ben megtalálható az az adat is, amit el akarnánk küldeni, nem?!"
Erre gondoltam.
"..... Hmm, bár ez biztos így van ?! - márminthogy a PI-ben minden adat fellelhető? Egy bizonyos méreten belül persze, tehát pl. minden évszámot tartalmaz, azt tudom."
Nem biztos, igaz úgy írtam mintha biztos lenne, de nincs kizárva, mindenesetre jól hangzik. Azért írtam úgy hogy lássam mit szólsz hozzá.
"Ebből én azt gondolnám, hogy ha valami szabályszerűség mégis van a pi jegyeiben, akkor egy adott blokkméretet nézve már vannak olyan esetek, amik nem fordulnak elő a számsorban soha sem."
Ez még nem jelenti azt hogy ne fordulna elő benne, az igaz hogy egy kicsit torzít vagyis nem teljesen egyenletes eloszlású, dehát lehet egy véletlen szám generátor nem egyenletes eloszlású is, pl egy szabályos kocka 5 oldalára 0-át írsz 1 oldalára 1-et írsz és elkezded dobálni (csalást kizárva) ettől még véletlen sorozat csak nem egyenletes eloszlású, erősen a 0 fele súlyozva mégis elég idő múlva bármilyen 0-1 sorozat kijöhet sőt 100% valószínűséggel kijön korlátos időn belül.
"Ellenben viszont tudtommal átlagos felhasználó számára nem nagyon érhetőek el, illetve meglehetősen drágák a hardveres véletlenszám-generátorok, tipikusan nagyvállalatokban (esetleg) van ilyen."
Árulnak olyan személyi számítógépeket melybe van beépítve hardveres random generátor. Tudtom szerint nem annyira gyors, fél-1 Megabit/sec. Az hogy mennyire megbízható ... hosszú.
Visszatérve a Pi-hez, nem tudom garanálni hogy az minden adatot tartalmazzon, de ez viszont igen:
pastebin pont com/MtvNm9uy
(
"Sajnálom, de válaszodban nem használhatsz linkrövidítőket, mint amilyen a pastebin.com linked!
Kérlek az eredeti linket másold a rövid változat helyére!"
Hibaüzenettel nem engedte rendesen belinkelni.
Ide beírni sem tudom rendesen mert levágja a sor eleji szóközöket amik nagyon fontosak lennének, ha normálisan meg lenne csinálva ez esetben szükségtelen lenne külső link.
)
Itt van az összes fényképed, videód, jogvédett tartalom, tikos adat, még ez amit most írok az is, egyszóval minden és mégis csak egy pár sorba le lehet kódolni.
Hmm, érdekes, hogy ilyen rövid kód, és ilyen szintű statikusságot generál... Bár sajna nem igazán tudom értelmezni a lényeget - azt még látom, hogy biteltolások vannak benne, de sajna a leglényegesebb sort nem értem.
Sajna a Python-szintaxist nem ismerem (bár először azt hittem, hogy ez C), emiatt nem tudom, hogy valójában mit takar --- de biztos jó, ha azt mondod...
A PC-be épített hardveres véletlengenerátorról még nem hallottam, szerintem ezért nem is biztos, hogy a környékemben kapható ((Pécsről lévén szó)).
De nincs szándékomban megvenni... egyenlőre annak is marhára örülnék, ha >merevlemez< lenne a gépembe, és nem kéne minden egyes indításnál memóriába kitelepíteni az egész OP rendszert mindenestül, driverekkel együtt ((már NAGYON idegesít és marhára fárasztó >[ ))
"Hmm, érdekes, hogy ilyen rövid kód, és ilyen szintű statikusságot generál..."
Mit értesz statikusság alatt?
"Bár sajna nem igazán tudom értelmezni a lényeget - azt még látom, hogy biteltolások vannak benne, de sajna a leglényegesebb sort nem értem."
A lényeg hogy egy i számlálót növelek egyesével és kiírom a számnak a bináris alakját, lényeges hogy binárisan írom ki és nem szövegesen (nem így 111011000100, mert ez szöveges). A bit eltolások azért kellenek hogy ki tudjam írni binárisan a számlálót, igazából ASCII karaktereket írok ki, de azok nem mások mint byte-ok. Python-ba akkora számot tárolhatok amekkora csak elfér a memóriába, ellentétben pl. a c-vel. Mivel minden adat, minden file tekinthető egy-egy kis/nagy természetes számnak így minden lehetséges adatot előállítja az a python kód elegendő idő alatt. Vagyis a kimentre adott bytesorozat valahanyadik bytejától valahanyadik byte-ig tartalmaz bármilyen adatot amit csak létezik. Igaz hogy a kezdőpozíció száma ahol van az adat valószínűleg több jegyű 2-es számrendszerbe mint ahány bites az adat amit tartalamz. Valójában mégsem állít elő minden adatot, egyrészt időkorlát miatt (nem várhatok pl. 10 a milliomodikon évig) másrészt memóriakorlát miatt, egy számlálót növelek folyamatosan véges idő alatt túllépi a memóriakorlátot (persze ehhez 10 a millimodikon év édes kevés lenne, szóval az idő és nem a memória a szűk keresztmetszet.)
Igaz hogy végtelen sok adatot előállít, de nem végtelen sok információt. Ha pl mondok 100 db egész számot vételtenszerűen 1-1000 között azt több információ mintha azt mondoanám hogy 1-től 1000-ig az összes egész szám. Ugyanannyi információ 1-1000 között 900 véletlenszám mint 100, mivel információ szempontjából az mindegy hogy az igen példányokat sorolom fel vagy a nem példányokat, ha egyértelműen rögzített az univerzumhalmaz.
Vagyis azzal hogy (python-ban) iteratívan befutom az összes adat halmazát és közlöm (kimenetre írom) ez információ közlés szemponjából egyenértékű azzal mintha semmit nem közölnék.
Hasonló mintha megkérdezném mit reggeliztél és az összes lehetséges választ megadnád de ezek közül csak egy igaz, ezt eddig is tudtam szóval nem információ (de rengeteg adattovábbítás).
-------
Ui.
Szerezz be egy merevlemezt!
"A lényeg hogy egy i számlálót növelek egyesével és kiírom a számnak a bináris alakját, lényeges hogy binárisan írom ki és nem szövegesen"
Jaaaaa.... akkor visszaszívom a statikusságot minden mértékben....
"Szerezz be egy merevlemezt"
Hááááttt..... ühüm.... erre szokták azt mondani, hogy "Könnyű azt mondani"
Bár abszolút váratlan szerencse folytán kaptam 40.000 forintot rokontól "érettségire előzetesbe" (amit sajna lehet, hogy nem fogok kiérdemelni, de majd még meglátjuk ;), és az szerintem elég kéne hogy legyen egy 320 GB-os SATA merevlemezre (egyébként beérném kevesebbel is, akár 20 GB-al is (bár annak fele máris a Win7-re menne), de eddig mindenkitől azt hallottam, hogy 320 GB alatt nincs SATA), de már jópárszor átvertek/megkárosítottak elektroipari cikkekben, és nagyon kéne vigyáznom, hogy mit veszek.
És ugye Pécsi vagyok, tehát e helyiségben kéne valahogy megoldjam, és itt különösképp szeretik átvágni/megzavarni az embert, én legalábbis eddig ezt tapasztaltam.
Esetleg ha már itt tartunk : Te esetleg Pécs közelébe nem tudsz elérhető piacot SATA !Laptopba! való, !megbízható! merevlemezekről?
A méret annyira nem lényeg - bár azért tényleg jó lenne, ha 20 GB meglenne, ebből 10 GB a Win7, a többi tíz pedig az egyetemhez szükséges programokhoz és adatokhoz/doksikhoz -, amennyit csak lehet spórolni a méreten >az ár javára<, az jól jönne, DE a megbízhatósága, tehát hogy legalább 5 évig bírja, ne kattanjon meg (a giroszkóp és az elektronika farplay kialakítása minimum), és bírja a tartós (akár napi 6 óra) használatot is, ne legyenek rajta már fél év után hibás szektorok, stb.
Te tudsz ilyet? Mennyire vagy jártas ezekben? Én sajna hardverben nem vagyok annyira jó (úm. még az asztali gépeken "nőttem fel", a mostaniakat nem tudom követni), és ezért is félek, hogy átvágnának.
:\
"(persze ehhez 10 a millimodikon év édes kevés lenne, szóval az idő és nem a memória a szűk keresztmetszet.)"
Ja, igen, mondjuk az én esetemben (4 GB RAM, 12 MB/sec átlagos írási sebesség (PenDrive-on, mert ugye csak az van és arról megy minden) a programfutás alatt vett mondjuk 500 KB/sec tényleges írási sebességnél (nálam C# kb. mindig ennyi volt USB-n) úgy:
2^(8*1024^3*3) / 2^(8*1024*500) sec. = >igen erős< kerekítéssel 5.8×10^7574463, ami hát években számolva is (1.864291806582376×10^7574456) nem hiszem, hogy még ebben az univerzumban, de azt se nagyon, hogy még a következő 10-ben le tudna zajlani.
XDDDDDDDDDDD
Jó, persze mondjuk egy bivajerős kvantum-szuperszámítógépen ESETLEG még ebben az univerzumban lezajlana, de arra se vennék életbiztosítást .... XDDDDDD
... már csak azért se, mert utóbbi előbb érvényét vesztené... XDDDDD
Na jó, tudom, ez fárasztó...
A kódról szólva meg mondjuk így azokat leírva (általad) már persze nem mondanám, hogy >annyira< használható - szemléltetésnek persze érdekes/jól jön ilyen filozofálgatáshoz - csak én zajban gondolkodtam, meg matekos cuccokban. De így már más - jóval egyszerűbb és tisztább - a helyzet.
Egyébként nem is tudtam, hogy alapból tud ilyet a Python - tetszóleges nagy integer használata! :D
Jó, mondjuk a C#-ban is van erre lehetőség, de ahhoz mindenféle külön .NET könyvtár kell meg bonyolultabb is.
"2^(8*1024^3*3) / 2^(8*1024*500) sec. = >igen erős< kerekítéssel 5.8×10^7574463, ami hát években számolva is (1.864291806582376×10^7574456) nem hiszem, hogy még ebben az univerzumban, de azt se nagyon, hogy még a következő 10-ben le tudna zajlani."
Nem tudom miféle kerekítés, még a kitevőbe is egy sokkal nagyobb számnak kéne lenni az eredménynél ha jól lenne számolva. Még ha a számítás jó lenne az egy dolog, de nem értem hogy hogy jöttek ki ezek a kitevők, eleve miért kell leosztani 2^(8*1024*500) számmal azt sem értem. Egyébként eredetileg még sokkal több év kéne annál amit írtál mire "kinőné" a 4 GB memóriát a számláló.
"A kódról szólva meg mondjuk így azokat leírva (általad) már persze nem mondanám, hogy >annyira< használható - szemléltetésnek persze érdekes/jól jön ilyen filozofálgatáshoz - csak én zajban gondolkodtam, meg matekos cuccokban. De így már más - jóval egyszerűbb és tisztább - a helyzet."
Naivan megközelítve ez a minden információ végtelen tárháza, hisz bármilyen információt mondasz azt tartalmazza. Valójában ez nem igaz, hiába tartalmazza valójában megegyezik azzal mintha nem lenne semmi információnk, fentebb már kifejtettem. Bármennyi információnk van (bármennyi fájlunk van, zene,videó, ekönyv stb.) nincs egy felső korlát aminél ne lehetne még több, ez lenne a legtöbb, de ez meg valójában mégis semmi, valójába a semminél több mert információt tartalmaz egy lehetséges sorrendről ahogy előállítja az összes adatot ... még lehetne ragozni, de azt hiszem érthető.
Hasonló érdekesség hogy a hex editorral bármilyen fájlt készíthetsz, elméletben naivan tökéletesen elég mindenre, amit felvettem volna videóra azt hex editorral leírhatom hiszen a videó is csak bitek egymásutánja és semmiféle korlátozás nincs hogy hex editorral milyen biteket írjak egymás mellé. Mondanom sem kell hogy ez még sincs így igazából, hiába nincs korlátozás afelől hogy milyen fájlt készítsek vele.
Ezeket érdekességnek szántam. Nem szokásos módon érzékeltettem az adat és az információ közti különbséget, bár gyakran keverik a kettőt meg az információra nincs egyértelműen elfogadott definíció, kicsit filozofikus hogy mi is az az információ.
"Hasonló érdekesség hogy a hex editorral bármilyen fájlt készíthetsz, elméletben naivan tökéletesen elég mindenre, amit felvettem volna videóra azt hex editorral leírhatom hiszen a videó is csak bitek egymásutánja és semmiféle korlátozás nincs hogy hex editorral milyen biteket írjak egymás mellé."
Igen, szvsz. ez kb. mindenkinek megfordult a fejében, aki már Hex editorhoz nyúlt.
A számokkal pedig nem tudom hol érted, hogy baj lenne.
Annyit valóban kifelejtettem, hogy ténylegesen 3 GB-ot számoltam, mivel a Win7 (persze van más is, de mivel ilyen gépről írok, ezt hoztam példának), annak a szolgáltatásai meg a többi mem.-rezidens program lenyúl 1 GB-ot, így jött a 1024^3;
a nyolc ugye az 1 bájt bitekben számolva, az 500 az említett 500 KB/sec.-nak FELTÉTELEZETT írási sebesség, a 2 hatványalap pedig ugye a bináris számrendszerben számolt lehetőségek miatt van (X biten 2^X-en lehetőség)
Legalábbis én így gondoltam.
Persze a matek annyira nem erősségem...
"A számokkal pedig nem tudom hol érted, hogy baj lenne.
Annyit valóban kifelejtettem, hogy ténylegesen 3 GB-ot számoltam, mivel a Win7 (persze van más is, de mivel ilyen gépről írok, ezt hoztam példának), annak a szolgáltatásai meg a többi mem.-rezidens program lenyúl 1 GB-ot, így jött a 1024^3;"
Azt erre értettem hogy ennél nagyobb:
"5.8×10^7574463, ami hát években számolva is (1.864291806582376×10^7574456)"
3 GB-os tárterületnek 2^(8*1024^3*3) állapota van eddig ok. Ha ezt 500 KB/sec (500 KB/sec = 500*1024 byte/sec) sebességgel próbáljuk előállítani ezeket akkor 1024^3*3/(500*1024)=1024^2*3/500 sec alatt megyünk végig telepesen rajta (kb. 104 perc). Az hogy a következő állapot Hamming-távolsága mekkora (hány bitben tér el) az lehet 1 bittől 3 GB-ig. Még nem beszéltem a hogy a python milyen memóriamenedzsmentel kezeli a számok tárolását.
Ha azt mondta volna hogy durva becslés : Teljes_végigmenés_ideje*állapotok_száma = (1024^2*3/500)*2^(8*1024^3*3) = (1024^2*3/500)*4,42978*10^11.191.683.579 sec, még azt mondom hogy nem egészen igaz, de logikus.
Felhasználok egy j változót is ami felveszi i értékét, de "lerombolok". A j=i nem jelent külön memóriafoglalást lényegébe, mert referenciaként kezel minden a python. A j-t kezdem binárisan eltolni ez már új memóriafoglalást jelent (valójába nem bizotos hogy mindig foglal, ha már eleve le van foglalva korábbról) már kapásból 3 GB helyett 1.5 GB-ra ugrott az i számláló maximális mérete, i+=1 -nél is új memóriafoglalás van, lehet nincs mert optimalizál az interpreter (lehet tényleg felülírja valójában), elvileg van mert python-ba minden szám módosíthatatlan (objektum konstans) egy változó egy ilyen konstansra egy referencia, ha növelem vagy csökkentem vagy szorzom stb. akkor egy másik konstansra lesz referencia. Az biztos hogy benne van ez az overhead hogy a j változó miatt megduplázom a memóriahasználatot.
Ui.:
Még mielőtt arra gondolnál hogy dehát ha így kezeli a számokat a python akkor lassú, valójában meg nagyon gyors más extrém hússzú egészeket használó matematikai függvénykönyvtárakkal összehasonlítva is igen jó sebességű, régen csináltam olyan programot c-ben ami nagy számokkal tud dolgozni,valamint c++ -hoz (nem én) csináltak BigInteger szám típust, ezekhez képest szó szerint több ezerszer gyorsabb a python.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!