[ASP] random image in groepen

Pagina: 1
Acties:

  • jfeelders
  • Registratie: Januari 2001
  • Laatst online: 04-05 06:48

jfeelders

Kwaliteit voor kwantiteit...

Topicstarter
Ik heb een aantal images (1.jpg t/m 48.jpg) die in groepen van 3 random weergegeven moeten worden (1,4,7,10,...,46). In de basis is dit een eenvoudig script, maar het groeperen lukt me niet meer. Vroeger heb ik dit soort dingen wel gedaan op de C=64, maar ik ben die kennis helemaal vergeten. Google, ASP101 en andere sites konden me helaas niet in de goede richting duwen...
Mijn script waarmee ik tot nu toe allerlei random images krijg, dus niet producten van 3 (geen php):
PHP:
1
2
3
4
5
6
7
8
9
10
11
<%
    Const NUMBER_OF_IMAGES = 48

    Randomize

    Dim NextCarImage1, NextCarImage2, NextCarImage3

    NextCarImage1 = Int((NUMBER_OF_IMAGES *3 * Rnd) / 3 + 1)
    NextCarImage2 = NextCarImage1 + 1
    NextCarImage3 = NextCarImage1 + 2
%>

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:57

Creepy

Tactical Espionage Splatterer

Stel, uit je NUMBER_OF_IMAGES*3*Rnd komt 12. Dat deel je door 3, dus daar komt 4 uit. Vervolgens 1 bij optellen en je hebt 5. En dus geen (1,4,7, etc).

Waarom niet gewoon een willekeurig randon nummer tussen 0 en 48 pakken en vervolgens er 1 van af blijven trekken totdat je op 1,4,7,10 etc. uitkomt?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
<%

Const NUMBER_OF_IMAGES = 48

Randomize()
Dim NextCarImage1, NextCarImage2, NextCarImage3

NextCarImage1 = round(NUMBER_OF_IMAGES * Rnd,0)
NextCarImage2 = NextCarImage1 + 1
NextCarImage3 = NextCarImage1 + 2
%> 


Werkt dit niet?
Dan zit je wel met het probleem dat als rnd op 47 of 48 komt dat je of plaatje 2 en 3 niet moet laten zien of 1 en 2 erna moet laten zien uiteraard!

O ik snap het nu pas denk ik!
Je wilt gewoon steeds 2 plaatjes overslaan?

[ Voor 35% gewijzigd door Mischa_NL op 29-07-2005 17:27 ]


  • jfeelders
  • Registratie: Januari 2001
  • Laatst online: 04-05 06:48

jfeelders

Kwaliteit voor kwantiteit...

Topicstarter
Mischa_NL schreef op vrijdag 29 juli 2005 @ 17:25:
Je wilt gewoon steeds 2 plaatjes overslaan?
Juist! Ik ben weer een stapje verder en volgens mij moet hij dan zo worden:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
<%
    Const NUMBER_OF_IMAGES = 48 

    Randomize

    Dim NextCarImage1, NextCarImage2, NextCarImage3

    NextCarImage1 = 3 * Int((NUMBER_OF_IMAGES / 3 * Rnd) + 1) - 2
    NextCarImage2 = NextCarImage1 + 1
    NextCarImage3 = NextCarImage1 + 2
%>

Verwijderd

jfeelders schreef op vrijdag 29 juli 2005 @ 17:53:
[...]

Juist! Ik ben weer een stapje verder en volgens mij moet hij dan zo worden:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
<%
    Const NUMBER_OF_IMAGES = 48 

    Randomize

    Dim NextCarImage1, NextCarImage2, NextCarImage3

    NextCarImage1 = 3 * Int((NUMBER_OF_IMAGES / 3 * Rnd) + 1) - 2
    NextCarImage2 = NextCarImage1 + 1
    NextCarImage3 = NextCarImage1 + 2
%>
en dan heb je het probleem als je random op 1 of 2 uitkomt.

Volgens mij werkt dit ook
Visual Basic:
1
2
3
4
5
<%
  NextCarImage1 = int(((Number_Of_Images - 2) + 1) * rnd)
  NextCarImage2 = NextCarImage + 1
  NextCarImage3 = NextCarImage + 2
%>

  • jfeelders
  • Registratie: Januari 2001
  • Laatst online: 04-05 06:48

jfeelders

Kwaliteit voor kwantiteit...

Topicstarter
Vreemd genoeg werkt mijn formule in de praktijk goed. Theoretisch zou er vanaf Rnd=0.969 een probleem moeten zijn: NextCarImage1>46.

Jouw formule klopt ook niet helemaal:
int(((Number_Of_Images - 2) + 1) * rnd) == int((Number_Of_Images - 1) * rnd)
Hiermee ga je bij rnd=<0.01 en rnd >=0.99 in de mist: 0 en 47 mogen niet.

Op zoek dus naar de perfecte formule... Wiskundigen verzamelt u! :)

Verwijderd

jfeelders schreef op zaterdag 30 juli 2005 @ 01:49:
Vreemd genoeg werkt mijn formule in de praktijk goed. Theoretisch zou er vanaf Rnd=0.969 een probleem moeten zijn: NextCarImage1>46.

Jouw formule klopt ook niet helemaal:
int(((Number_Of_Images - 2) + 1) * rnd) == int((Number_Of_Images - 1) * rnd)
Hiermee ga je bij rnd=<0.01 en rnd >=0.99 in de mist: 0 en 47 mogen niet.

Op zoek dus naar de perfecte formule... Wiskundigen verzamelt u! :)
je hebt gelijk, het moet zijn
code:
1
int((Number_Of_Images - 2) * rnd) + 1

voor Number_Of_Images = 48 hier komt een getal tussen de 1 en 46 uit

  • Mischa_NL
  • Registratie: Mei 2004
  • Laatst online: 01-02-2023
code:
1
((48-2) * 1) + 1 = 47

Of vergis ik me nou en kan rnd nooit 1 zijn?

  • jfeelders
  • Registratie: Januari 2001
  • Laatst online: 04-05 06:48

jfeelders

Kwaliteit voor kwantiteit...

Topicstarter
Verwijderd schreef op zaterdag 30 juli 2005 @ 03:30:
voor Number_Of_Images = 48 hier komt een getal tussen de 1 en 46 uit
Maar dan ga je voorbij aan de voorwaarde dat de formule alleen veelvouden van 3 mag berekenen, dus 1, 4, 7, 10,... ,46.
Mischa_NL schreef op zaterdag 30 juli 2005 @ 04:10:
Of vergis ik me nou en kan rnd nooit 1 zijn?
Klopt. 0<Rnd<1

[ Voor 5% gewijzigd door jfeelders op 30-07-2005 09:37 ]


Verwijderd

jfeelders schreef op zaterdag 30 juli 2005 @ 09:37:
[...]
Maar dan ga je voorbij aan de voorwaarde dat de formule alleen veelvouden van 3 mag berekenen, dus 1, 4, 7, 10,... ,46.
Oh, dan heb ik me vergist. ik dat dat je gewoon een blokje van drie stuks wilde hebben, waarbij de blokken ook elkaar overlappen. Sorry voor het misverstand
Pagina: 1