Warsztat - Programowanie gier

Marzec 13, 2010, 15:32:41 *
Witamy, Gość. Zaloguj się, lub zarejestruj proszę.

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Warsztat, Regulamin forum, #warsztat, Wiki, FAQ, NoPaste, Mapa
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  
Strony: 1 [2]
  Drukuj  
Autor Wątek: Manager  (Przeczytany 2359 razy)
yarpen
SuperHero Member
******

wiadomości: 1287


Zobacz profil WWW
« Odpowiedz #15 : Luty 29, 2008, 12:39:00 »

Obliczenia pewnie wziete stad: http://episteme.arstechnica.com/eve/forums/a/tpc/f/6330927813/m/821008399831 Smiley Tyle teorii.
Zapisane
Krzysiek K.
Member2000
*******

wiadomości: 9206



Zobacz profil
« Odpowiedz #16 : Luty 29, 2008, 14:40:06 »

Cytuj
Ciekawi mnie jak to obliczyłeś Smiley
Z prawdopodobieństwa. Mamy możliwych N wartości hashy (tu N = 2^32), losowo wybieramy K wartości (tu K = 10000) i chcemy poznać prawdopodobieństwo kolizji. Pierwszy wybór na pewno nie skoliduje (bo nie ma z czym), drugi ma 1/N szans na kolizję (z pierwszym kluczem), a i-ty klucz ma (N-i+1)/N szans na skolidowanie. O ile dobrze pamiętam, dla małych N i K takie rzeczy się liczyło ręcznie w szkole średniej, ale tu nie ma problemu zaprząc co tego kompa. Smiley

Cytuj
Naprawdę "Duzo prosciej zmienic nazwe" niż się tym zajmować dłużej niż 2min Smiley A 4 zmiany nazwy "nie będą męczące dla zespołu" Smiley Można nawet wyznaczyć nagrodę dla tego szczęśliwca który jako pierwszy zobaczy: "Żwirek" i "Muchomorek nie mogą występować razem. Smiley
Dla prawdopodobieństwa kolizji rzędu 1% w pełni się zgadzam, ale gdy kolizje będą występowały pospolicie (wspomniane 50% przy 80000 kluczy), to każdy kto będzie miał dostęp do edytora będzie musiał wymyślać zastępcze nazwy kilkanaście/kilkadziesiąt razy dziennie. Smiley
Zapisane

Aktualne zajęcie: Szkoła DJKurs DJ
Esidar
SuperHero Member
******

wiadomości: 1308


Zobacz profil
« Odpowiedz #17 : Luty 29, 2008, 14:45:32 »

Cytuj
Ciekawi mnie jak to obliczyłeś Smiley
Z prawdopodobieństwa.

Aa.. czyli teoria ze strony którą podał Yarpen Smiley
A tutaj jest praktyka Smiley http://burtleburtle.net/bob/hash/doobs.html kolumna COLLIDE-32 to ilość kolizji przy hash'u 32bit.
Prawdę mówiąc szkoda tylko że przy FNV nie ma wyników, bo właśnie tego używam Smiley

[Edit]
Cytuj
każdy kto będzie miał dostęp do edytora będzie musiał wymyślać zastępcze nazwy kilkanaście/kilkadziesiąt razy dziennie
A praktyka mówi, że nigdy się to nie zdarzyło w czasietworzenia Wiedźmina Smiley
« Ostatnia zmiana: Luty 29, 2008, 15:09:31 wysłane przez Esidar » Zapisane
yarpen
SuperHero Member
******

wiadomości: 1287


Zobacz profil WWW
« Odpowiedz #18 : Luty 29, 2008, 15:08:11 »

Faktem jest, ze nie sadze bysmy dobijali do 80k wartosci (test slownika zreszta tez nie). Niemniej bylo tego troche. Trzeba brac pod uwage, ze wszystkie te wzory zakladaja calkowicie losowe dane. W "realnych" przypadkach tak nie jest.
Zapisane
albireo
Sr. Member
****

wiadomości: 297


Zobacz profil
« Odpowiedz #19 : Luty 29, 2008, 16:10:46 »

Cytuj
Naprawdę "Duzo prosciej zmienic nazwe" niż się tym zajmować dłużej niż 2min Smiley A 4 zmiany nazwy "nie będą męczące dla zespołu" Smiley Można nawet wyznaczyć nagrodę dla tego szczęśliwca który jako pierwszy zobaczy: "Żwirek" i "Muchomorek nie mogą występować razem. Smiley
Dla prawdopodobieństwa kolizji rzędu 1% w pełni się zgadzam, ale gdy kolizje będą występowały pospolicie (wspomniane 50% przy 80000 kluczy), to każdy kto będzie miał dostęp do edytora będzie musiał wymyślać zastępcze nazwy kilkanaście/kilkadziesiąt razy dziennie. Smiley
O ile ta 50% (w przybliżeniu) szansa wystąpienia kolizji w zbiorze 80000 kluczy się zgadza, to już dalsze rozumowanie jest błędne, szansa, że dodanie kolejnego klucza spowoduje kolizję, wynosi w tym przypadku w przybliżeniu 1 do 50000.
Co nie zmienia faktu, że i tak bym na tym nie polegał.
Zapisane
Krzysiek K.
Member2000
*******

wiadomości: 9206



Zobacz profil
« Odpowiedz #20 : Luty 29, 2008, 17:36:22 »

Cytuj
O ile ta 50% (w przybliżeniu) szansa wystąpienia kolizji w zbiorze 80000 kluczy się zgadza, to już dalsze rozumowanie jest błędne, szansa, że dodanie kolejnego klucza spowoduje kolizję, wynosi w tym przypadku w przybliżeniu 1 do 50000.
Fakt, jednak błąd w rozumowaniu zrobiłem. Wycofuję się ze stawianych zarzutów. Smiley
Zapisane

Aktualne zajęcie: Szkoła DJKurs DJ
Reg
Member2000
*******

wiadomości: 3615



Zobacz profil WWW
« Odpowiedz #21 : Marzec 02, 2008, 11:00:40 »

Hashowałem kiedyś łańcuchy, które były keszowane do renderowania w moim starym systemie GUI. Za jego pomocą pokazywałem m.in. jakiś licznik który liczył po kolei "1", "2", "3" itd. Długo zastanawiałem się, czemu czasami pokazują się złe liczby, aż wpadłem na to że hashe się powtarzają Tongue Od tamtej pory używam MD5 albo innego hasha dłuższego niż 32 bity.

Natomiast w moim obecnym managerze zasobów, zasoby identyfikuję po stringu. Mam za to założenie, żeby nie wyszukiwać ich w każdej klatce, tylko jak najrzadziej. Na przykład obiekt encji pobiera sobie w konstruktorze wskaźnik do zasobu siatki na podstawie jego nazwy albo obiekt materiału pobiera w konstruktorze wskaźnik do zasobu tekstury na podstawie jego nazwy, a potem już używa go przez wskaźnik. Co myślicie o takim rozwiązaniu?
Zapisane

spax
Sr. Member
****

wiadomości: 255


^^


Zobacz profil WWW
« Odpowiedz #22 : Marzec 02, 2008, 11:36:26 »

Natomiast w moim obecnym managerze zasobów, zasoby identyfikuję po stringu. Mam za to założenie, żeby nie wyszukiwać ich w każdej klatce, tylko jak najrzadziej. Na przykład obiekt encji pobiera sobie w konstruktorze wskaźnik do zasobu siatki na podstawie jego nazwy albo obiekt materiału pobiera w konstruktorze wskaźnik do zasobu tekstury na podstawie jego nazwy, a potem już używa go przez wskaźnik. Co myślicie o takim rozwiązaniu?

I w tym wypadku hasha juz nie uzywasz? Pytam sie bo mam dokladnie takie samo zalozenie (w konstruktorze) tyle ze wlasnie z hashem Smiley
Zapisane

Krzysiek K.
Member2000
*******

wiadomości: 9206



Zobacz profil
« Odpowiedz #23 : Marzec 02, 2008, 12:35:59 »

Cytuj
Hashowałem kiedyś łańcuchy, które były keszowane do renderowania w moim starym systemie GUI. Za jego pomocą pokazywałem m.in. jakiś licznik który liczył po kolei "1", "2", "3" itd. Długo zastanawiałem się, czemu czasami pokazują się złe liczby, aż wpadłem na to że hashe się powtarzają Tongue Od tamtej pory używam MD5 albo innego hasha dłuższego niż 32 bity.
Najwidoczniej użyłeś jakiegoś dziwacznego i dosyć kiepskiego hasha, albo miałeś tych hashy bardzo dużo (ponad wspomniane 10000). Smiley
Zapisane

Aktualne zajęcie: Szkoła DJKurs DJ
Reg
Member2000
*******

wiadomości: 3615



Zobacz profil WWW
« Odpowiedz #24 : Marzec 02, 2008, 20:41:49 »

I w tym wypadku hasha juz nie uzywasz? Pytam sie bo mam dokladnie takie samo zalozenie (w konstruktorze) tyle ze wlasnie z hashem Smiley
Nie, już nie. Mam std::map<wstring, IResource*>. Ale nie twierdzę że to najlepsze rozwiązanie. Po prostu tak to wymyśliłem ponad rok temu i tak zostało, od tej pory skupiałem się na innych kawałkach kodu a ten manager zasobów dobrze mi służy przez tak długi czas Smiley
Zapisane

Strony: 1 [2]
  Drukuj  
 
Skocz do:  

Hosting: Polska Strefa - Ogłoszenia
Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC