Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dva random broja čija kombinacija ne postoji u tabeli

[es] :: MS SQL :: Dva random broja čija kombinacija ne postoji u tabeli

Strane: 1 2

[ Pregleda: 5501 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vujkev
Beograd

Član broj: 8072
Poruke: 1347
212.200.240.*



+104 Profil

icon Re: Dva random broja čija kombinacija ne postoji u tabeli29.05.2008. u 21:34 - pre 194 meseci
Baza je sve, ali nije mala. Trenutno postoji oko 30 tabela, a još nisu dodate sve opcije

Inače velična mape još nije određena, ali mislim da neće biti manja od 200x100.
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Dva random broja čija kombinacija ne postoji u tabeli29.05.2008. u 21:41 - pre 194 meseci
Mislio sam na veličinu u smislu količine podataka, ne broja tabela. 100x200 nije ništa i nema razloga da sve to ne učitaš u memoriju pri startovanju programa i zaboraviš na SQL.

Sa druge strane, TribalWars kaže da ima 500k igrača. Ako su svi na istoj mapi, veličina mape bi teško mogla da bude manjeg reda veličine od 100kx100k. A i da nisu svi na jednoj mapi, ukupan broj polja bi bio isti (reda veličine milijarde).
 
Odgovor na temu

vujkev
Beograd

Član broj: 8072
Poruke: 1347
212.200.240.*



+104 Profil

icon Re: Dva random broja čija kombinacija ne postoji u tabeli29.05.2008. u 22:18 - pre 194 meseci
Nisu svi na jednoj mapi već je sve podeljeno u nekoliko desetina "svetova" tako da ipak mislim (nadam se) da će količina podataka biti veća.
Naučio sam...
Da je važnije biti ljubazan nego biti u pravu
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-1.sezampro.yu.



+395 Profil

icon Re: Dva random broja čija kombinacija ne postoji u tabeli29.05.2008. u 23:49 - pre 194 meseci
Citat:
@vujkev
Učetvujem u izradi igrice slične TribalWars (nadam se da sam dobro napisao) u kom korisnik može da kreira "Selo" na mapi.

Pa sto ne rece da si u game-modu .Pitah te pre neki dan a tek sad vidim o cemu se radi ..

Tebi vec radi taj kod sto si postovao al kako kazes nemas dobru "gustinu raspodele" na mapi od 100 X 100
tj. voleo bi da imas neko maximalno dozvoljeno odstupanje tacaka (koje ti odredis) od koordinatnog pocetka.
Takvu bazu treba samo da popunis sa nekim boljim random generatorom iz nekog ozbiljnijeg programskog jezika a ne iz TSQL-a ...

Pogledaj ovde primer u c++ -u :
http://www.codeproject.com/KB/recipes/zigurat.aspx
Probaj da iskoristis ovaj algoritam koji se zasniva na normalnoj (Gausovoj) raspodeli tacaka (pogledaj grafikon u obliku zvona)
a koje ce zadovoljiti uslov standardne devijacije (ili srednje kvadratno odstupanje slucajnih vrednosti od srednje vrednosti ) kod slucajnih brojeva.
Evo malo teorije:
http://en.wikipedia.org/wiki/Standard_deviation
http://en.wikipedia.org/wiki/Variance
Kad pronadjes tj. generises sve moguce tacke ostaje ti samo da ih u bazi flag-ujes sa zauzeto/slobodno ..

EDIT :
Eh da ..setih se da u TSQL-u postoji takva funkcija za dobijanje standardne devijacije ..
Pogledaj STDEV ili STDEVP agregate funkcije ako ti gore pomenuti primer ne pije vodu .....

[Ovu poruku je menjao deerbeer dana 30.05.2008. u 11:19 GMT+1]

[Ovu poruku je menjao deerbeer dana 30.05.2008. u 11:30 GMT+1]
Viva lollapalooza
 
Odgovor na temu

deerbeer
Beograd

Član broj: 174418
Poruke: 1189
*.adsl-a-1.sezampro.yu.



+395 Profil

icon Re: Dva random broja čija kombinacija ne postoji u tabeli02.06.2008. u 10:23 - pre 194 meseci
Sta bi ? Nista od TribalWars-a ....
Kao sto rekoh za generisanje slucajnih brojeva tj. raspodela sela unutar nekog sveta koristi normalnu (gausovu) raspodelu
jer ako se uzme kao primer neki grad u srbiji statisticki gledano sva naselja, opstine,sela itd
su gusto raspodeljeni u nekom radijusu od recimo 20km (ako racunas ukupan radijus od 100km) od centra tog grada ....

Evo TSQL skripte koja ti mozda bude od pomoci :
STDEVP (ili ti STDEV population) je standardna devijacija slucajnih brojeva za veliki broj uzoraka
A sve statisticke raspodele u matematici priblizavaju se normalnoj(gausovoj) za veliki broj uzoraka
(ZAKON VELIKIH BROJEVA)

Code:

create  table  #temp (locationX int,locationY int)
declare @brojac int 
set @brojac = 0
while @brojac <= 100000     /* stdevp primeniti samo za veliki broj uzoraka slucajnih promenjlivih 
begin 
insert into #temp (locationX,locationY) 
values ((rand() * 100),rand()* 100) 
set @brojac = @brojac + 1 
end 


declare @stdevX int 
declare @stdevY int  

Select @stdevX = stdevp (locationX) FROM #temp
Select @stdevY = stdevp (locationY) FROM #temp

select distinct locationX,locationY from #temp 
where locationX < @stdevX and locationY < @stdevX 

drop table #temp

--result set --
11          2 
2    22
27    4
14    25
1    18
13    11
25    15
16    0
23    22
4    7
11    21
10    14
22    5
8    23
21    9
22    17
19    3
20    19
7    20
24    20
...
...
...



Ovakva raspodela ti daje 784 tacaka ... sto je dovoljno kako si rekao za 500 igraca na mapi ..

Tebi jedino ostaje da ocistis neke lokacije tj. tacke koje dobijes ovakvim generisanjem
a koje su mnogo blizu jedna druge
Na primer : selo1(5,10) i selo2(5,13) jer je malo verovatno da takva sela budu toliko blizu
mada posto je u TribalWars tematika srednji vek
vise je verovatno da su neka sela toliko blizu i da ih naprimer deli jedan most i reka :)



[Ovu poruku je menjao deerbeer dana 02.06.2008. u 11:33 GMT+1]
Viva lollapalooza
 
Odgovor na temu

[es] :: MS SQL :: Dva random broja čija kombinacija ne postoji u tabeli

Strane: 1 2

[ Pregleda: 5501 | Odgovora: 24 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.