64 bites számok R-ben

Az érdekes problémák érdekes tanulságokhoz vezetnek.

Kiindulás: írtam egy modellt, amiben használok UNIX időbélyegeket az időpontok megjelölésére. Ebben nincs semmi ördöngősség, egy szám, ami az 1970 január 1. óta eltelt másodpercek segítségével jelzi az időt. A helyzet azonban az, hogy ezek nagy számok, annyira nagyok, hogy egy átlagos számítógép nem nagyon tud vele mit kezdeni, nem fér el a szokásos 32 biten, mert azon csak 2^32-1 számot tudnak megmutatni. Erre készítettek egy csomagot, ami úgy ábrázolja a 64 bites számokat, hogy az első 32-t és a második 32-t külön veszi, és egy listaként tartja számon. Bravúros megoldás, és rettentően jól működött, míg csak tárolni kellett. A használata már nehezebb volt.

Amikor egyenletes mintát szerettem volna venni a rendelkezésre álló időintervallumból, elsőre azt kértem, válasszon ki véletlenül n darab számot 1és N közül, ahol N>2^31-1. Erre hibát adott, de én furfangos vagyok, és kértem n darab véletlen számot 0 és 1 közül, majd beszoroztam N-nel – de ezek eredménye mind 0, mert véletlenszám 64 bitesre konvertálása során a törtszámok egészig csonkolódnak. Ennek oka, hogy a csomag először a másik, nem 64bites számot is átkonvertálja ugyan olyanra, mint az eredeti – ami viszont egészekre van kitalálva, tehát az átkonvertált számnak is egésznek kell majd lennie. Erre van ám egyszerű megoldás, vegyünk 1 és 2^31-1 közt egyenletesen mintát. Ekkor a lehetséges számok intervallumának felét fedtük le. Ha ezt felszoroznánk kettővel, akkor vennénk a teljes intervallumról… de nem, mert az csak 2^32-1ig menne. De az ötlet nem rossz, vegyünk nagy egész számokat, amíg a szükséges minta nem nagyobb a meglévő számoknál, és osszuk el azokat a számokat egyenletesen 1 és N közt!
-No, hát melyik legyen ez a szám?
-2^31-1!
-Nem jó! Az R nem tud ilyen hosszú vektort lefoglalni. Pech, jöhet az alternatíva-keresés az időbélyegek helyett…

No, sebaj, az R 3.0.0 már ismeri a 2^31-1 elemnél hosszabb vektorokat, de csak 64 bites rendszeren. Hmmmm… öcsém alszik, és a vasa megfelel a kritériumnak. Essünk neki.
Nem, nem működött (természetesen). A számokkal sem boldogult el, ráadásul a használt csomagok (az hagyján hogy int64, de a plyr és a doParallel) még híján vannak a friss verzióhoz tartozó változatnak, így azzal kváti semmit nem tudtam kezdeni laikusként. Pedig de szép is lett volna!

A megoldás
A bit64 csomag, és annak a megoldásai. Zseniálisan egyszerű lett tőle a dolgom 🙂

Via: 64 bites számok R-ben

56 Responses to 64 bites számok R-ben

  1. Pingback: viagra non prescription

  2. Pingback: cialis professional

  3. Pingback: is cialis generic

  4. Pingback: cialis 20mg

  5. Pingback: Pfizer viagra canada

  6. Pingback: Discount viagra

  7. Pingback: viagra cialis

  8. Pingback: price of cialis

  9. Pingback: prices of cialis

  10. Pingback: discount cialis

  11. Pingback: online pharmacy viagra

  12. Pingback: online pharmacy viagra

  13. Pingback: viagra 100mg

  14. Pingback: buying ed pills online

  15. Pingback: buying ed pills online

  16. Pingback: best non prescription ed pills

  17. Pingback: cialis 10 mg

  18. Pingback: online pharmacy

  19. Pingback: Buy cheap cialis

  20. Pingback: levitra cost

  21. Pingback: levitra dosage

  22. Pingback: online casino

  23. Pingback: wind creek casino online games

  24. Pingback: viagra online pharmacy

  25. Pingback: online casino real money usa

  26. Pingback: slot games online

  27. Pingback: tadalafil 20

  28. Pingback: cash loan

  29. Pingback: cash payday

  30. Pingback: payday loans

  31. Pingback: viagra prescription

  32. Pingback: real money online casinos usa

  33. Pingback: best real money casinos

  34. Pingback: cialis 5 mg

  35. Pingback: online roulette spielen paypal

  36. Pingback: casino games with three dice

  37. Pingback: Casinos 2020

  38. Pingback: 20 cialis

  39. Pingback: cialis 20

  40. Pingback: cialis internet

  41. Pingback: cialis buy

  42. Pingback: viagra online pharmacy

  43. Pingback: slots real money

  44. Pingback: best online casino for money

  45. Pingback: online casino games for real money

  46. Pingback: online casino real money us

  47. Pingback: cheapest viagra online

  48. Pingback: sildenafil dosage

  49. Pingback: online pharmacy viagra

  50. Pingback: tadalafil 20 mg

  51. Pingback: tadalafil cialis

  52. Pingback: cialis 5 mg

  53. Pingback: cialis buy cialis

  54. Pingback: play for real online casino games

  55. Pingback: online casino games real money

  56. Pingback: lowest price generic viagra

Comments are closed.