Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2012-02-18 20:13:20

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

2 liczby naturalne dające unikalny wynik

Wiem że może to zabrzmi troszkę dziwacznie (nie chce za bardzo rozpisywać dlaczego potrzebuje tego )

chodzi o to że z dwóch użytkowników o unikalnych ID ( liczba uint) chcę otrzymać unikalną liczbę całkowitą (dowolnym sposobem)
tak aby dla innych par użytkowników uzyskany wcześniej wynik nie występował , lecz nie znalazłem odpowiedzi w sieci na moje pytanie , więc pytam was , spotkał się ktoś z was z czymś podobnym  ? lub zna algorytm który mógłby mnie naprowadzić na rozwiązanie problemu ?

Offline

 

#2  2012-02-18 20:39:05

  Minio - Użyszkodnik

Minio
Użyszkodnik
Skąd: Brno, Česko
Zarejestrowany: 2007-12-22
Serwis

Re: 2 liczby naturalne dające unikalny wynik

Suma kwadratów?


Spinnen Essen: [url=http://fluxboxpl.org/portal/]FluxboxPL[/url] [url=http://przepis-na-lo.pl/]Przepis na LibreOffice[/url]

Offline

 

#3  2012-02-18 20:58:33

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: 2 liczby naturalne dające unikalny wynik

[s]Troszkę duże liczby wychodzą ,myślę aby wynik Twój poddać pierwiastkowki kwadratowemu i zaokrągleniu w dół/górę[/s] ,

pudło , wyniki są podobne

może ktoś ma inne sugestie ??

Ostatnio edytowany przez szewczyk (2012-02-18 21:07:28)

Offline

 

#4  2012-02-18 21:07:29

  NIC - Członek DUG

NIC
Członek DUG
Skąd: Wrocław
Zarejestrowany: 2006-12-25
Serwis

Re: 2 liczby naturalne dające unikalny wynik

Moje rozumienie:
a + b == Z
c + d == Y != Z
d + a == X != Y != Z
d + e == V != X != Y != Z
...

Takie pytanka...
1. Czy te "unikalne ID użytkownika" oraz "unikalna liczba całkowita (pary)" są w jakiś sposób ograniczone? uint32, uint64, uint8, itp.
2. Czy "unikalne ID użytkownika" i "unikalna liczba całkowita (pary)" są powiązane także unikalnością czy mogą być takie same, np. 3-ka użytkownika  i  3-ka pary

Pomysł... Hmm... Konkatencja wyrównanych ajdików (alignment id, np. 0x000d i 0x0600)

Ostatnio edytowany przez NIC (2012-02-18 21:08:05)


Stronka-dom: [url]http://titek.victorygames.pl[/url]
Jabber: nic@jabster.pl
Hobby: kompilowanie Linuksa, Bluetooth
Dystrybucja: żadna, bliski krewny LFS, składak

Offline

 

#5  2012-02-18 21:17:56

  pablo - Członek DUG

pablo
Członek DUG
Skąd: Białystok
Zarejestrowany: 2006-04-12
Serwis

Re: 2 liczby naturalne dające unikalny wynik

Nie znajdziesz wyniku, który nie będzie się zwiększał bardzo szybko (przynajmniej ja nic nie wymyśliłem :P)
Coś co zadziała (raczej) to:
f(x) - funkcja zwracająca wartość n-tej liczby pierwszej
g(u1,u2) - nowy hash
g(u1,u2) = f(u1)*f(u2) - przy założeniu, że g(u1,u2) = g(u2,u1)
Jeżeli powyższe założenie jest nieprawdziwe to musimy jeszcze dodać 1 jeżeli u2>u1 (lub odwrotnie).

Co do tego ostatniego to nie jestem pewien czy na pewno jest to dobre rozumowanie, ale gwarancji nie daje.
Co do pierwszego to rozkład dowolnej liczby na czynniki pierwsze zawsze jest określany jednoznacznie. Tzn dana liczba jest uzyskiwana z jednej wariancji liczb pierwszych. Dlatego mnożąc dwie liczby pierwsze otrzymamy liczbę której rozkład posiada dokładnie dwa czynniki pierwsze.


Pusto :)

Offline

 

#6  2012-02-18 22:05:14

  panjandrum - Użytkownik

panjandrum
Użytkownik
Skąd: Lublin/Kraków
Zarejestrowany: 2009-03-20

Re: 2 liczby naturalne dające unikalny wynik

Gdy oba unikalne ID są typu uint to masz 4294967296 unikalnych numerów. Masz wtedy 9223372034707292160 unikalnych par.
Unikalną liczbę z 2 par uzyskasz najprościej tak:

Kod:

unsigned long long pair_id = MAX(id1, id2) + MIN(id1, id2) * 4294967296

A to znalazłem w sieci:
http://board.flashkit.com/board//showthread.php?t=805270

Ostatnio edytowany przez panjandrum (2012-02-18 22:58:54)


[url=https://github.com/panjandrum/obshutdown]obshutdown[/url] - Opedbox shutdown dialog

Offline

 

#7  2012-02-19 10:43:47

  gindek - Zubr, bydle na etacie.

gindek
Zubr, bydle na etacie.
Skąd: Z puszczy.
Zarejestrowany: 2008-12-08

Re: 2 liczby naturalne dające unikalny wynik

jako id kolejne liczby pierwsze pewnie zdaly by egzamin.


" Wojny przychodzą i odchodzą, a moi żołnierze są wieczni"


"Zbuduj mały, dziarski router z udostępnionych przez prowadzącego części od Kamaza?"

Offline

 

#8  2012-02-19 14:20:09

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: 2 liczby naturalne dające unikalny wynik

[b]panjandrum[/b] rozwiązanie z linku jest pewne że uzyskam unikalny wynik ,lecz zależy mi aby wynik był typu INT :(
ale rozwiązanie rozwiązanie zaproponowane przez Ciebie wygląda na trafne :)
wrzucę zaraz w kod i sprawdzę .dzięki !!!!!!!

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)

[ Generated in 0.010 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00097 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='13.59.92.247' WHERE u.id=1
0.00086 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '13.59.92.247', 1732691532)
0.00048 SELECT * FROM punbb_online WHERE logged<1732691232
0.00045 SELECT topic_id FROM punbb_posts WHERE id=195192
0.00104 SELECT id FROM punbb_posts WHERE topic_id=20709 ORDER BY posted
0.00089 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=20709 AND t.moved_to IS NULL
0.00007 SELECT search_for, replace_with FROM punbb_censoring
0.00109 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=20709 ORDER BY p.id LIMIT 0,25
0.00107 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=20709
Total query time: 0.00706 s