Your easiest and quickest way to do this would be to name all your images a number. Then use the "Random()" command and generate a number between 0 and the amount of files you have.

Otherwise you can loop through each file within the folder and put it into an array. Then do the Random() and selected the array index for your random image.

Thanks. I forgot how to make use of Random function already. can I have a sample code for it? Thanks again...

Dim RandomClass As New Random()
Dim rndNumber As Integer

rndNumber = (RandomClass.Next(01, 99))

This will choose a random number between 1 and 99. Keep in mind, when doing images, you should stick to a proper format and if you have less than 100 images, and plan on keeping it that way, include one zero in place of the first digit:

01 - 99
001 - 999
0001 - 9999

Now you don't honestly HAVE to follow this, but it prevents errors dramatically. Plus, if you get an error, do you really want to go through and rename a thousand images? :)

Here is something that you should probably use to grab the image:
Keep in mind I use T_*.jpg for all my "thumbnails".

'Random Image
Public Function RndImage() As String
	Dim rnd As New Random()
	'The below is for image names that start with "T_" and are jpeg.
	Dim ID As String = "T_*.jpg"
	Dim IDArr() As String = ID.split("*")
	Dim images() As String = System.IO.Directory.GetFiles((Server.MapPath("\images\"), ID)
	Dim imageToDisplay As String
	if CountPhotos(ID) < 1 then imageToDisplay = "nopicture"
	Do While Len(imageToDisplay) < 1
		imageToDisplay = images(rnd.Next(images.Length))
	loop
	Return ("\images\" & IDArr(0) & imageToDisplay & IDArr(1))
End Function

Public Function CountPhotos(ByVal ID As Long) As Integer
	Dim numero As Integer = 0
	Dim strPath As String = (Server.MapPath("\images\") & ID)
	Dim strFiles As String = Dir(strPath)
	Do Until Len(strFiles) = 0
		numero += 1
		if numero > 0 then exit do
	Loop
	CountPhotos = numero
End Function

This code is untested, so let me know if you have problems.

This article has been dead for over six months. Start a new discussion instead.