Oprettet tir. d. 12. marts 2002 kl. 17:07:17

dennism
dennism (5.356 point. Point ude: 0)
www.demaweb.dk

rand() - lodtrækning...

Jeg er ved at lave et system som automatisk skal fordele et vist antal personer ud på 2 hold...

Jeg har bruge denne kode:
_____________________________________
<?
if ($action == "") {
echo "<form method=post action='$PHP_SELF'>
<input type=hidden name=action VALUE=navne><br>
Antal personer:&nbsp;<input type=text name=antal_personer size=2><br>
Antal personer:&nbsp;<input type=text name=antal_hold size=2><br>
<input type=submit value=Videre>";
}

if ($action == "navne") {
$tal = "0";

echo "<form method=post action='$PHP_SELF'><input type=hidden name=action VALUE=bland><input type=hidden name=antal_personer VALUE=$antal_personer><input type=hidden name=antal_hold VALUE=$antal_hold>";

while ($tal < $antal_personer) {
$tal++;
echo "Navn på person nr. $tal: <input type=text name=navn[$tal] size=15><BR>";
}

echo "<BR><input type=submit value=Videre>";

}

if ($action == "bland") {

}
?>_____________________________________

Jeg vil så bruge funktionen rand() til at vælge et tal mellem 1 og $antal_personer... Men hvordan laver jeg så sådan at den samme bruger ikke kan blive valgt mere end én gang, og hvodan laver jeg sådan at de bliver fordelt på $antal_hold???

Håber i forstår hvad jeg mener...!?

Skrevet tir. d. 12. marts 2002 kl. 17:47:13| #1

tipsen
tipsen (35.007 point)
Dvs. du skal fordele n personer på m antal hold - jeg går udfra fordelingen skal være ligelig (dvs. 12 personer SKAL fordeles som 6,6 og ikke 5,7)?

Skrevet tir. d. 12. marts 2002 kl. 17:48:37| #2

tipsen
tipsen (35.007 point)
Det lyder faktisk som en sjov opgave...

Skrevet tir. d. 12. marts 2002 kl. 17:51:37| #3

dennism
dennism (5.356 point)
www.demaweb.dk
Ja... Men hvis der kun er 5 personer skal der bare være 3 på hold ét og 2 på hold to... Tror du at du kan fortælle mig hvordan jeg gør?

Som du kan se så har jeg lavet: "if ($action == "bland") {
}"... Du skal bare hjælpe mig hvordan jeg laver udregningerne!

Skrevet tir. d. 12. marts 2002 kl. 17:58:27| #4

tipsen
tipsen (35.007 point)
Jeg tror jeg har en smart løsning - øjeblik!

Hvilke informationer gemmer du om folk? Har du eks. deres navn i et array - og så kan man tilføje et holdnummer til den person?

Skrevet tir. d. 12. marts 2002 kl. 18:02:59| #5

dennism
dennism (5.356 point)
www.demaweb.dk
Som du kan se i den kode jeg skrev så kommer personens navn til at stå i navn[$tal]... Hvor $tal er nr. på navnet...

Håber du kan hjælpe! Har nemlig ikke en anelse til hvordan man griber det an...

Skrevet tir. d. 12. marts 2002 kl. 18:14:52| #6

tipsen
tipsen (35.007 point)
Du kan både have et vilkårligt antal hold og et vilkårligt antal personer?

Skrevet tir. d. 12. marts 2002 kl. 18:17:29| #7


Skrevet tir. d. 12. marts 2002 kl. 18:23:20| #8

tipsen
tipsen (35.007 point)
Her er et udkast:

// Denne del er udelukkende for at få lavet et personarray
$person = array();
array_push($person, "tipsen");
array_push($person, "dennism");
array_push($person, "invisibleman");
array_push($person, "ericjacobsen");
array_push($person, "mortenfn");
array_push($person, "retaxes");
array_push($person, "bounce2002");
array_push($person, "beldring");
array_push($person, "gizmo-gizmo");
array_push($person, "krazmulu");

//Her starter den nødvendige kode:

//Tæller antal personer
$antalpersoner = count($person);

//Definerer antal hold
$antalhold = 4;

//Laver en vilkårlig rækkefølge af personerne
srand ((float)microtime()*1000000);
shuffle($person);

// starter med hold 1 og tildeler personerne holdnr i forhold til
// den rækkefølge de har fået i array'et - Der bliver også taget
// højde for skæve holdfordelinger!

$holdnr = 1;
$antalprhold = $antalpersoner / $antalhold;

for ($i=0;$i<$antalpersoner;$i++) {
    if ($i+1 > $holdnr*$antalprhold) {
        $holdnr++;
    }
    echo $person[$i] . " - hold $holdnr<br>";
}

Skrevet tir. d. 12. marts 2002 kl. 18:45:57| #9

tipsen
tipsen (35.007 point)
-kan du få det til at fungere?

Skrevet tir. d. 12. marts 2002 kl. 18:54:39| #10


Skrevet tir. d. 12. marts 2002 kl. 19:02:51| #11

dennism
dennism (5.356 point)
www.demaweb.dk
Tusind tak...
Gider du lige forklare hvordan denne sætninger fungere (og hvad deres fungtion er):
srand ((float)microtime()*1000000);

Og... Hvad er det nu man bruger en 'for'-løkke til?

Skrevet tir. d. 12. marts 2002 kl. 19:09:30| #12

tipsen
tipsen (35.007 point)
srand() giver et (nogenlunde) tilfældigt frø til randomize funktionen, således at du kan være sikker på at få fornuftigt tilfældige resultater hver gang!

http://www.php.net/ (...)

for-løkken looper over alle elementerne i person-array'et - så bliver de allesammen skrevet ud og får tildelt et hold!

Skrevet tir. d. 12. marts 2002 kl. 19:34:14| #13

dennism
dennism (5.356 point)
www.demaweb.dk
Hvad er forskellen på for og while?

Skrevet tir. d. 12. marts 2002 kl. 20:03:08| #14

tipsen
tipsen (35.007 point)
for bruger du generelt til at loope et bestemt antal gange, mens du bruger while til at loope indtil en bestemt betingelse er opfyldt - i praksis kan de dog ofte afløse hinanden!

Skrevet tir. d. 12. marts 2002 kl. 20:17:51| #15


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger