webForumDet fria alternativet

Problem med randomize igen...

6 svar · 113 visningar · startad av limpon

limponMedlem sedan sep. 2001175 inlägg
#1

Jag har ett problem igen.. med denna ¤#"% randomizen.

Jag vet hur man plockar fram en randomizad spelare.

Men hur plockar man fram flera?

Jag tänkte mig att det skulle bli nått sånt här.

Do until RS.EOF OR I = 7

brasql = "select * from player where spelare_agd_av = '"&nick&"'"
set spelare = databas.execute(brasql)
if not spelare.eof then
arr = spelare.getrows()
randomize
cnt = ubound(arr,2) + 1
s = int(cnt*rnd)

mal = arr(i,s)
(Sedan en update sats här)
RS.Movenext
Loop

Själva problemet ligger i mitt spel. där egentligen 7 är antalet gjorda mål, som är variabeln "gjordamal".
Men vi får inga spelare att skrivas ut för att ha gjort mål. Och icke assists heller, hoppas nån förstår problemet.. Tack

------------------
//Limpon

LarsGMedlem sedan dec. 200012 464 inlägg
#2

Nej, jag förstår inte.

Varifrån kommer RS och hur får nick värdet? Nu gör utför du samma select flera gånger. Skall det vara flera spelare ägd av samma nick eller olika spelare.

Hur skulle du använda gjordamal/assists?

Randomize bör ligga utanför loopen.

------------------
essentitia preter non sans multiplicandum

limponMedlem sedan sep. 2001175 inlägg
#3

Ja det ska kunna vara flera spelare som är ägd av samma nick. För det är ju mål i matcherna jag vill randomiza ut till spelarna man har i tabellen player.

Jag testade även den här..

sql = "select * from player where spelare_agd_av = '"&nick&"'"
Set RS = Databas.Execute(SQL)
I = 0
Do until RS.EOF or I = 7
Randomize
mal = Int(rnd*RS("id"))
I=I+1
(sedan en update sats här.)
RS.Movenext
Loop

Jag tycker den här randomize satsen är lättsammare att förstå =).

Men som sagt förrut så är jag ny på randomize, har inte full kläm på det hela ännu. Hoppas du förstår lite mer nu ialla fall. annars får du säga till :)

------------------
//Limpon

LarsGMedlem sedan dec. 200012 464 inlägg
#4
brasql = "select id from player where spelare_agd_av = '"&nick&"'"
set spelare = connect.execute(brasql)
if not spelare.eof then
   arr = spelare.getrows()
   cnt = ubound(arr,2) + 1
   randomize
   for i = 1 to 7
       s = int(cnt*rnd)
       sql = "update player set mal = mal + 1 where id = " & arr(0,s)
       connect.execute sql,,128
   next
end if

är det något sådant du vill ha. Nu är det 7 slumpvis utvalda spelare som får ett mål till. (Som det är nu så kan samma spelare bli framslumpad flera gånger.)

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 17 nov 2001]

limponMedlem sedan sep. 2001175 inlägg
#5

Ja exakt, så det ska vara =)
Jag måste göra något nu bara för att målvakterna ska ju inte kunna göra t.ex 3 mål på en match =)

Men tusen tack. En fråga jag har bara.

arr = spelare.getrows()
cnt = ubound(arr,2) + 1

arr`? får den alla posterna?
sedan cnt förstår jag inte alls.

har du tid o förklara så vore jag tacksam

------------------
//Limpon

LarsGMedlem sedan dec. 200012 464 inlägg
#6

Ja, arr kommer att innehålla alla poster från select-satsen. Det är en tvådimensionell array där varje rad innehåller en post från tabellen.

funktionen Ubound(arr,2) returnerar det högsta indexet i arrayen. Eftersom första index är 0 så kommer då cnt att innehålla antalet rader som finns i arrayen.

------------------
essentitia preter non sans multiplicandum

limponMedlem sedan sep. 2001175 inlägg
#7

Aha jag förstår inte så mycket men jag förstår funktionen på dom nu =)
Tack för hjälpen Lasse.

------------------
//Limpon

124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)