24. januar 2003 - 00:43Der er
5 kommentarer og 1 løsning
Nyt sorterings ID til records (haster)
Jeg har en Database med en Tabel der indeholder 16 navne på nationer. Disse nationer skal når der køres en funktion (klick på en knap), sorteres ind i 4 grupper med 4 nationer i hver gruppe. Siden der har funktionsknappen er en ASP side, der tjekker på om funktionen er kørt. Er den det vises knappen ikke mere, men istedet kommer en tekst der forklarer at funktionen er kørt!
Jeg har rodet med det, men er nu kommet helt i vildrede, så her er noget at se på! 1) Jeg laver et Prim array med 16, laver et Temp array med 16. Henter en random position ud af Prim array, og fjerner denne position samt formindsker Prim array. Fylder værdien fra.............. og så går der ged i det hele (rod og kaos)
2) Jeg henter mine table rows ind i et array, fylder en randomized værdi ind i arrayet.
Problemet er at ingen nation må få et tal som er taget/indsat i forvejen.
Måske er ovennævnte forklaring helt i skoven, men jeg er også temmelig baldret. Så spørg bare!
PS Da resultatet af denne funktion giver de 16 nationer en værdi som de efterfølgende ALTID sorteres efter, er det helt rigtige vel at skabe en tekstfil, med resultatet for ikke at benytte en DB connection etc.
Lav et arrray med 16 elementer, svarende til tallende 1-16. Sæt alle elementer til true (for ledig).
For hver nation tager du en random tal og checker i dit ledig array om tallet er taget. Hvis tallet er ledigt, så får nationen dette tal og du sætter det tilsvarende element i ledig-arrayet til false. Hvis tallet er taget, så prøver du igen.
En anden måde er at give hver nation et tilfældigt tal i mellem 1 - 32000 (sandsyligheden er 1 til 2000) eller et andet tilsvarende højt tal. Jo højere tal, des mindre er sandsynligheden for 2 ens. Løb evt. nationerne igennem og kontroller at en nation ikke har samme sorteringværdi som sin efterfølger. Hvis der skulle ske, så foretag tildelingen igen.
Jeg ville iøvrigt lægge sorteringen i DB. Du har vel under vel fat i en DB-connection under alle omstændigheder. Så det er suge dine nationer sorteret efter sorteringsrækkefølgen koster "intet". Iøvringt så kan kontrollen af ens sorteringstal kontrolleres med en SELECT COUNT(sorteringstal) FROM nationer HAVING COUNT(sorteringstal) > 1 Hvis dette RS ikke er tomt, så foretag tildelingen igen.
Jeps! Men her er der mulighed for at den står og looper i sig selv hvis tallet er taget, skulle jeg mene. Der burde være en måde der er optimal for denne slags jumbling. Jeg vil nemlig helst undgå (hvis det er muligt) and de står og looper for meget i sine egne løkker.
Er der ikke noget med at Rnd funktionen har et indbygget "indeks" den kan (stacke) efter, hvis den kører uden for funktionerne? Sorry hvis jeg lyder lidt bøvlet, men nu er jeg også meget søvnig.
Prøv det inden du begynder at bekymre dig om at det står og looper "for meget" i sine egne løkker.
Men hvis det skal være sådan, så giver du hver nation et tilfældigt tal i DB. Nu tager du så hver nation, sorteret efter sorteringtallet og lægger 1 til den første nation, 2 til den anden , ..... og 16 til den sidste. Så vil rækkefølgen være en kombination af tilfældigheden og den rækkefølge nationerne er lagt i DB (og iøvrigt unik, dvs ikke 2 ens).
Da Rnd skal generere pseudo-tilfældige tal, så kan det jo godt ske at det samme tal bliver udtrukket 2 gange i træk.
Jo men der var lige et trafikuheld der kom i vejen. Kigger det igennem nu og vender tilbage du :/
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.