Avatar billede kelis Nybegynder
09. april 2011 - 16:46 Der er 13 kommentarer og
2 løsninger

Random børn

Hej eksperter,

Håber nogen kan hjælpe med at løse problemet. Jeg skal lave orienteringsløb med 30 børn som skal fordeles tilfældigt/random ud på 9 poster. Der skal ikke lige mange børn i hver post.

For eks. skal der kun 4 børn i post 1 og 6 børn i post 2 etc...kan det laves i html eller java og i så fald hvordan gør jeg? Forstiller mig lidt, at når jeg klikker på en "submit" knap genere det en fordeling af børnene på posterne.

Jeg har forsøgt mig frem med name generator men har opgivet den


Mvh
Avatar billede Slettet bruger
09. april 2011 - 17:10 #1
Giv alle børnene et tal.
Så kan du med Javascript udtrække et tilfældigt tal, som du så fylder posterne op med.
Avatar billede claes57 Ekspert
09. april 2011 - 17:20 #2
lav en formular i html, og javascript til beregning.
formular skal have 2*9 felter.
i første antal børn på den post, og i den næste kommer børn til at stå
javascript skal så aflæse felt 1 og trække det antal tegn ud fra liste "abcdefghijklmnopqrstuvwxyzæøå@" (der er 30 tegn, et pr barn)
Der er så lidt kontrol tilbage - et barn/tegn kan ikke være mere end en gang pr post, og alle børn skal vel aktiveres.
Noget med
Math.floor(Math.random()*længde på listen (javascriptet fjerner det brugte tegn, og placerer det i felt).
Avatar billede kelis Nybegynder
09. april 2011 - 18:06 #3
Hej Steeven og claes,

Tak for jeres hurtige svar, er rigtig glad for at I vil hjælpe. Jeg glemte egentlig at skrive, at jeg ikke har forstand på java eller html eller hvordan koden i sin helhed skal se ud:-(

Vil en af jer hjælpe med hele koden?

Mvh
09. april 2011 - 18:23 #4
Maa jeg give et bud? 
Jeg har lavet denne kode-stump der blander tal.  Lad os sige at du i et fremtidigt orienteringsloeb har 28 boern, hver med et nummer fra 1 til 28, og 7 poster hvor der paa post 1, 2, 3,.. skal vaere 5, 3, 2,.. boern, saa faar du en liste udskrevet af de 28 boern/numre i tilfaeldig raekkefoelge.  Du sender saa de foerste 5 til post 1, de naeste 3 til post 2, o.s.v.:

Paa denne maade kan du genbruge koden.

Her er den:

<script type-"text/javascript>
function randOrd()
{
  return(Math.round(Math.random())-0.5)
}
var antal = 28
var boern = new Array()
for(i=0; i<antal; i++)
{
boern[i] = i+1
}
boern.sort(randOrd)
document.write('Random : ' + boern + '<br>')
</script>

For hvert orienteringsloeb indsaetter du i var antal det antal boern der deltager.

Jeg haaber dette maa vaere til nytte.
09. april 2011 - 18:25 #5
Jeg koerte lige koden med 28 boern og jeg fik denne raekke numre:
Random : 6,28,5,16,17,15,8,9,20,22,12,13,19,11,26,4,18,1,10,21,24,23,25,7,2,27,14,3
Avatar billede olebole Juniormester
09. april 2011 - 18:45 #6
<ole>

Dette kunne også være en løsning:


<script type="text/javascript">
Array.prototype.shuffle = function(){return this.sort(function(){return 0.5-Math.random()})};

var oPosts = {
    postA: {numKids:4, kids:[]},
    postB: {numKids:2, kids:[]},
    postC: {numKids:3, kids:[]},
    postD: {numKids:3, kids:[]},
    postE: {numKids:2, kids:[]}
};
var aKids = [
    "Kid 1",
    "Kid 2",
    "Kid 3",
    "Kid 4",
    "Kid 5",
    "Kid 6",
    "Kid 7",
    "Kid 8",
    "Kid 9",
    "Kid 10",
    "Kid 11",
    "Kid 12",
    "Kid 13",
    "Kid 14",
    "Kid 15" // <-- NB: ikke komma her
].shuffle();

function findKids() {
    var x, oKid, a;
    for (x in oPosts) {
        oKid = oPosts[x];
        a = oKid.kids;
        for (var i=0,j=oKid.numKids; i<j; i++) {
            oKid.kids[i] = aKids.pop();
        }
    }
    // Her alertes grupperne, men de kan også skrives ind i dokumentet
    for (var x in oPosts) alert(x+" =>\n"+oPosts[x].kids.join("\n"))
}
</script>

<p>
    <button onclick="findKids()">Fordel</button>
</p>



/mvh
</bole>
Avatar billede Slettet bruger
09. april 2011 - 19:01 #7
Holdaop det var et populært spørgsmål : )
- og her kommer lige et svar mere:
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Fordeling</title><style type="text/css">
body    {font:11pt verdana;}
h2    {margin:0 0 0 75px;}
h3    {margin:10px 0 0 0;}
</style><script>

Array.prototype.clone = function () {var a = new Array(); for (var property in this) {a[property] = typeof (this[property]) == 'object' ? this[property].clone() : this[property]} return a}

var barn = new Array(
"Anders","Børge","Carl","Dennis","Erik","Frank","Georg","Hans","Ib","Julius","Kurt","Lars","Monrad","Niels","Orla",
"Anette","Berta","Cecilie","Dorte","Ellen","Freja","Gyda","Helle","Iben","Julie","Karen","Lulu","Mona","Nille","Olga"
)

var poster = new Array(
    {navn : "Svinget",    antal : 5},
    {navn : "Søen",        antal : 2},
    {navn : "Marken",    antal : 4},
    {navn : "Skoven",    antal : 4},
    {navn : "Vejen",    antal : 3},
    {navn : "Gården",    antal : 5},
    {navn : "Stalden",    antal : 2},
    {navn : "Stien",    antal : 3},
    {navn : "Pladsen",    antal : 2}
)

function fordel()
    {
    var tmp = barn.clone()          // hele banden (igen)
    var s = "<h2><u>Fordeling</u></h2>"    // output
    for (var p=0;p<poster.length;p++)    // posterne fra en ende af
        {
        s += "<h3>"+poster[p].navn+"</h3>"
        var komma = ""
        for (var i=0; i<poster[p].antal; i++)
            {
            var n = Math.floor(Math.random() * tmp.length) // pluk en tilfældig
            s += komma + tmp[n]
            komma = "  +  "
            tmp.splice(n,1)    // fjern fra listen af tilbageværende
            }
        }
    document.getElementById("vis").innerHTML = s+"<hr><a href='java script:fordel()'>Omfordel</a>"
    }

</script></head><body>
<div id="vis"><a href="java script:fordel()">Fordel</a></div>
</body></html>
Avatar billede Slettet bruger
09. april 2011 - 19:05 #8
- de 2 steder der står "java script" skal det samles til ét ord.
12. april 2011 - 07:21 #9
kelis, fik du disse indlaeg?  Fik du loest det stillede problem ved hjaelp af et (eller flere) af kodeforslagene?  I saa fald er tiden maaske inde til at lukke spoergsmaalet, efter at have bedt om svar hvis noedvendigt.  Eller har du stadig spoergsmaal?  Saa sig til.
Avatar billede kelis Nybegynder
22. april 2011 - 21:26 #10
Hej og mange tak for jeres hjælp. Der var rigtig meget jeg kunne bruge og arbejde videre med. Jeg vil rigtig gerne give jer alle point, hvordan gør jeg det?
Avatar billede kelis Nybegynder
22. april 2011 - 21:38 #11
Hvordan fordeler jeg point?
Avatar billede kelis Nybegynder
22. april 2011 - 21:43 #12
Tror jeg har fundet ud af det, men mangler "svar" fra nogen af jer eksperter
22. april 2011 - 21:46 #13
Det er dig der bestemmer det.  Du har svar fra et medlem.  Hvis du mener at have faaet hjaelp fra flere medlemmer beder du disse om at oprette et svar, og naar svarene er kommet saetter du flueben i den lille firkant i alle svarene og klikker paa 'Accepter svar og opret points'.
Avatar billede kelis Nybegynder
22. april 2011 - 22:32 #14
Christian vil du ikke lægge et svar?
22. april 2011 - 23:14 #15
Svar fra mig.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester