/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Flere unikke Randoms
Fra : Ukendt


Dato : 14-06-07 21:07

Hej

Jeg prøvet at få returneret 3 unikke tal.

Har I en ide til noget kode der kan dette.
Jeg har kigget på diverse netsider og usenet og har ikke fundet løsningen.
Der må da være andre der har brug for samme funktion.

Problemet ved denne kode er at tallene kan være ens, hvilket jeg ikke vil
have.
<%
Randomize Timer
Rtal1 = ( (Int(20 * Rnd) + 1) )
Rtal2 = ( (Int(20 * Rnd) + 1) )
Rtal3 = ( (Int(20 * Rnd) + 1) )

Response.Write Rtal1
Response.Write "<br>"
Response.Write Rtal2
Response.Write "<br>"
Response.Write Rtal3
Response.Write "<br>"
%>

På forhånd tak for hjælpen

Brian Wolter
http://www.zolex.dk



 
 
Leif Neland (14-06-2007)
Kommentar
Fra : Leif Neland


Dato : 14-06-07 23:15

Brian Wolter wrote:
> Hej
>
> Jeg prøvet at få returneret 3 unikke tal.
>
> Har I en ide til noget kode der kan dette.
> Jeg har kigget på diverse netsider og usenet og har ikke fundet
> løsningen. Der må da være andre der har brug for samme funktion.
>
> Problemet ved denne kode er at tallene kan være ens, hvilket jeg ikke
> vil have.
> <%
> Randomize Timer
> Rtal1 = ( (Int(20 * Rnd) + 1) )
> Rtal2 = ( (Int(20 * Rnd) + 1) )
> Rtal3 = ( (Int(20 * Rnd) + 1) )

Den hurtige (?) grimme løsning:
---------------------------------------------------
Rtal1 = ( (Int(20 * Rnd) + 1) )
Rtal2 = ( (Int(19 * Rnd) + 1) )
if Rtal1=Rtal2 then
Rtal2=20
end if
Rtal3 = ( (Int(18 * Rnd) + 1) )
if Rtal1=Rtal3 or Rtal2=Rtal3 then
Rtal2=19
end if

if Rtal1=Rtal3 or Rtal2=Rtal3 then
Rtal2=20
end if


'Den generelle løsning, beskrevet som at trække et antal tilfældige kort fra
en bunke
'Der ses bort fra af arrays starter med 0; der er altså et hul først i
bunken, det fremmer overskueligheden...
'
Dim kortstak,udtrukne,m,n
for n=1 to MAX_TAL
kortstak(n)=n 'Læg kortene i en række
next
for m=1 to ANT_UDTRUKNE
r=int((MAX_TAL-m) * Rnd)+1 'Træk et tilfældigt nummer
udtrukne(m)=kortstak(r) 'Læg det udtrukne kort til side i ny stak
kortstak(r)=kortstak(MAX_TAL-m) 'Læg det sidste/øverste kort ind i hullet
next

Første gang vælges et tilfældigt kort ud af 20.
Næste gang et tilfældigt ud af 19 osv.

Leif



Jørn Andersen (14-06-2007)
Kommentar
Fra : Jørn Andersen


Dato : 14-06-07 23:20

On Thu, 14 Jun 2007 22:07:24 +0200, "Brian Wolter" <brian#wolter.dk>
wrote:

>Hej
>
>Jeg prøvet at få returneret 3 unikke tal.
>
>Har I en ide til noget kode der kan dette.
>Jeg har kigget på diverse netsider og usenet og har ikke fundet løsningen.
>Der må da være andre der har brug for samme funktion.
>
>Problemet ved denne kode er at tallene kan være ens, hvilket jeg ikke vil
>have.


Søg på Google "asp random unique" - og få fx:

<url: http://www.codeave.com/asp/code.asp?u_log=140>
Checke hvert resultat og forkaste dubletter.

<url: http://www.codetoad.com/vb_random.asp>
(Godt nok VB, men det kan vist nemt konverteres)


Good luck!

--
Jørn Andersen,
Brønshøj

Ukendt (15-06-2007)
Kommentar
Fra : Ukendt


Dato : 15-06-07 09:18

"Brian Wolter" <brian#wolter.dk> skrev i en meddelelse
news:XYqdnd6-YpNhAuzbRVnyuQA@giganews.com...
> Hej
>
> Jeg prøvet at få returneret 3 unikke tal.
>
> Har I en ide til noget kode der kan dette.
> Jeg har kigget på diverse netsider og usenet og har ikke fundet løsningen.
> Der må da være andre der har brug for samme funktion.
>
> Problemet ved denne kode er at tallene kan være ens, hvilket jeg ikke vil
> have.
> <%
> Randomize Timer
> Rtal1 = ( (Int(20 * Rnd) + 1) )
> Rtal2 = ( (Int(20 * Rnd) + 1) )
> Rtal3 = ( (Int(20 * Rnd) + 1) )
>
> Response.Write Rtal1
> Response.Write "<br>"
> Response.Write Rtal2
> Response.Write "<br>"
> Response.Write Rtal3
> Response.Write "<br>"
> %>

Hvad med denne løsning:

<%
Do While Rtal1 = Rtal2 OR Rtal1 = Rtal3 OR Rtal2 = Rtal3
Rtal1 = ( (Int(20 * Rnd) + 1) )
Rtal2 = ( (Int(20 * Rnd) + 1) )
Rtal3 = ( (Int(20 * Rnd) + 1) )
Loop

Response.Write Rtal1
Response.Write "<br>"
Response.Write Rtal2
Response.Write "<br>"
Response.Write Rtal3
Response.Write "<br>"
%>

Neuhafen



>
> På forhånd tak for hjælpen
>
> Brian Wolter
> http://www.zolex.dk
>
>



Ukendt (15-06-2007)
Kommentar
Fra : Ukendt


Dato : 15-06-07 20:37


"Brian Wolter" <brian#wolter.dk> skrev i en meddelelse
news:XYqdnd6-YpNhAuzbRVnyuQA@giganews.com...
> Hej
>
> Jeg prøvet at få returneret 3 unikke tal.
>
> Har I en ide til noget kode der kan dette.
> Jeg har kigget på diverse netsider og usenet og har ikke fundet løsningen.
> Der må da være andre der har brug for samme funktion.
>
> Problemet ved denne kode er at tallene kan være ens, hvilket jeg ikke vil
> have.
> <%
> Randomize Timer
> Rtal1 = ( (Int(20 * Rnd) + 1) )
> Rtal2 = ( (Int(20 * Rnd) + 1) )
> Rtal3 = ( (Int(20 * Rnd) + 1) )
>
> Response.Write Rtal1
> Response.Write "<br>"
> Response.Write Rtal2
> Response.Write "<br>"
> Response.Write Rtal3
> Response.Write "<br>"
> %>
>
> På forhånd tak for hjælpen
>
> Brian Wolter
> http://www.zolex.dk
>
>
Super mange tak alle sammen. Det var 3 forskellige, men meget brugbare svar.

Brian



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408921
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste