webForumDet fria alternativet

Alogritm för bättre slump?

ASP

4 svar · 194 visningar · startad av MikeEast

Medlem sedan sep. 200153 inlägg
Frågan#1

Hej på er alla.

Jag har problem med en slumpfunktion som jag har gjort.

Den skapar ett unikt filnamn, eller egentligen skapar den bara en sträng med 8 tecken mellan a och z...

Hur som helst är den usel och fantasilös. Jag har genererat typ 400 filer med den funktionen och sett att det finns massor av exempel där det finns block med kanske 20 filer som alla börjar med samma sträng... typ "jjwll"... På en del av dem skiljer det kanske bara en bokstav.
Hur stor chans är det om det hade varit rent statistiskt?

Efter som jag slumpar mellan 25 tecken och dessa får återkomma i slumpningen har vi 25^8 olika kombinationer. Det bli ju 152 587 890 625!!! Jag vet att datorer är dåliga på att slumpa, men det här är för mig mycket märkligt...

Min funktion:

Function GetRandomFileName(strFileExt)
	Dim fso, strFileName2, intRndNumber
Set fso = CreateObject("Scripting.FileSystemObject")
	For i = 0 to 7
		Randomize
		intRndNumber = rnd *26
		If cInt(intRndNumber) >= 0 AND cInt(intRndNumber) < 26 Then 
			strFileName2 = strFileName2 & chr(97 + cint(intRndNumber))
		End If
	Next
	strFileName2 = strFileName2 & "." & strFileExt
	If fso.FileExists(server.mappath("/") & "\images\uploadProd\" & strFileName2) Then
		GetRandomFileName = GetRandomFileName(strFileExt)
	Else
		GetRandomFileName = strFileName2
	End If
End Function

Den är ju som ni ser rekursiv och släpper inte ifrån sig ett namn som redan finns...

Så.. Den funkar ju.. Men jag blir bara så fundersam på om det finns någon som har en riktigt bra slumpfunktion?

Tackar..

// MikeEast

------------------
Alltså.. Det är vad jag tycker..

Medlem sedan feb. 20001 590 inlägg
#2

Borde vara hyfsat säkert. Rent teoretiskt kan funktionen loopa väldigt länge beroende på slumpen. Möjligheten är ju att filnamnet finns, och denna möjlighet ökar med antalet filer.

Vad ska du ha alla olika filnamn till? för man kan lösa det på andra sätt, exempelvis döpa filen efter år-månad-dag-timme-sekund, dvs den aktuella tiden när filen skall skapas. Då behövs ingen slump, man behöver inte heller kolla tidigare filnamn (för säkerhets skull kanske man ska kolla tidigare filnamn, för allt beror ju på serverns klocka...)

Ett annat sätt är att hålla en indexering lagrad, helt enkelt ett nummer som ökas för varje fil. Indexeringan kan man ha i en textfil, eller en applikationsvariabel eller ett serverobjekt eller liknande.

/T

------------------
Jensen Ambassadör, mitt bästa köp! www.jensen.no

Medlem sedan sep. 200153 inlägg
#3

Hmm..

Bilderna är för en produktkatalog. I värsta fall kan dom skaka fram upp till 2000 bilder.

Jag tänkte på möjligheten att döpa dem till typ image145.jpg och så(alltså id:t)
Jag kom dock på att det inte var så bra, för eftersom en bildbank av detta slaget kommer att vara värd en del för konkurrenter så vill jag inte göra det så lätt att tanka ner dem...
Jag snodde nämligen bilder på det viset själv från ett ställe där alla bilder hette något i sifferföljd..

Men det är inte därför jag frågar egentligen..

Jag var bara intresserad av att veta mer om slumpen. Det måste ju finnas nån som har gjort en killer-slump liksom..

Som kanske kan vara lite mer varierad än min..

------------------
Alltså.. Det är vad jag tycker..

Medlem sedan feb. 20001 590 inlägg
#4

Om du ändå spara bilden eller bildens namn i databasen, så är det enklast att döpa dom efter artikelnummer eller id nummer.
Jag tycker inte det spelar någon roll om någon kan "sno" bilderna, för dom är ju ändå åtkomliga, dvs. om en besökare väljer att titta på alla produkter så finns ju alla bilder redan i cashen. Sätt då en copyrighttext i ett hörne istället.

/T

------------------
Jensen Ambassadör, mitt bästa köp! www.jensen.no

Medlem sedan juli 20011 084 inlägg
#5

okej inget med dit inlägg utan ville bara säga att han har ju copyright på den utan att sätta upp någon text på sidan! allt material som är gjorda av svenskar är copyright skyddade och behöver ingen text eller (c).

(ni kanske redan vet detta men kände bara för att säga det ifall någon inte viste ;) )

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)