22. oktober 2004 - 18:51Der er
15 kommentarer og 1 løsning
array med unikke tilfældige tal
Jeg ønsker at fylde et array med tilfældige tal, men tallene skal være unikke, og jeg har skrevet følgende funktion, men af en eller anden grund går nogle af tallene igen i arrayet en gang imellem, og nu har jeg stirret mig blind på den og kan ikke se fejlen (sikkert noget i stil med ikke at se skoven for bare træer...)
Håber der er nogen der kan spotte fejlen...
function getRandomNumbers($intNumbersToShow) { $arrRandomNumber = array(); $boolFlag = TRUE;
Med al respekt, så tror jeg ikke du har prøvet det af, for det vil aldrig virke... Har selvfølgelig tænkt på arra_unique, men at fylde et stort array med tilfældige tal, og så bruge array_unique vil sikkert virke, men i 1 ud 10000000 vil det fejle, og det dutter jo ikke hvis koden skal bruges til at køle et atomkraftværk :-)
Hvad snakker du om? Det er da vist dig der ikke har prøvet det? Selvfølgelig virker det. array_unique returnerer det array du giver den, blot uden dubletter. Den kan du roligt bruge i forbindelse med at drive et atomkraftværk, hvis du blot benytter den korrekt.
Desuden giver dit program ikke særlig meget mening hvis man ser nærmere efter. Jeg kan se du har prøvet at ikke at tilføje dubletter; jeg går ud fra at det er det din $boolFlag er til. Det virker bare ikke. Desuden vil det ikke give mening ved $intNumbersToShow >= 10.
Nå, men SKAL koden så bruges til at køle et atomkraftværk ?
Nej, spøg til side. Du kunne jo bruge in_array() til at se om det nye tal eksisterer i forvejen inden du lægger det ind i dit array. Lav evt. en variabel til at tælle hvor mange elementer du har lagt i arrayet og lad din for-løkke checke på den i stedet. Det er hurtigere end at bruge count() i hvert gennemløb.
Egentlig spændende diskussion om performance, der er nok ikke nogen tvivl om at olebole's vil give den bedste... det kunne dog forbedres ved ikke at sætte $aTest[$intNumber] = 1 men i stedet til 0x1, da dette ikke vil afsætte plads i ram på serveren til en hel integer, hvis jeg ikke tager helt fejl!
coderdk-> Jeg har ikke afprøvet dit andet svar, men det første gav ikke succes, og i mellemtiden havde rednex jo svaret desværre, men tak for hjælpen alligevel.
Begge mine svar var nu før rednex, men never mind :P
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.