4 forskellige random numbers

Tags:    c#

<< < 12 > >>
Jeg skal have genereret 4 forskellige tilfældige tal mellem 1 og 8 - er der nogen der har forslag til hvordan jeg lettest gør det? :)

Tallene skal gemmes i et array, så jeg tænker det er noget med en løkke der kan gennemgå arrayet hver gang der findes et random tal og tjekke om det findes i forvejen ... eller hvad? :s



Indlæg senest redigeret d. 13.03.2010 21:21 af Bruger #15753
Lav et array med 8 elementer, put tallene fra 1-8 i arrayet, og bland dem rundt. Brug de første 4 tal i arrayet.

(Jeg ved intet om C#, så måske skal du bruge en liste, vector, eller en anden container...)



Du kan bruge Random klassen til at generere dine tal. Prøv at tage et kig her: http://msdn.microsoft.com/en-us/library/system.random.aspx

Til opbevaring vil et array udemærket kunne bruges og til at tjekke om det findes i forvejen kan du bruge en løkke, som du selv foreslår.



Indlæg senest redigeret d. 14.03.2010 00:57 af Bruger #6559
Jeg er med på hvordan random klassen fungerer.

Jeg kan godt finde ud at at sætte tilfældige tal ind i arrayet.

Jeg kan også godt køre en løkke der for hvert tal tjekker om det er det samme som forrige, og indsætter et nyt tal hvis det er.

Men hvordan kan jeg finde ud af om de nye tal der er sat ind så ikke er de samme igen? hvis I forstår? ..



Tjekker om tallet findes i arrayet.

public bool Findes(int tal, int[] array)
{
for(int i = 0; i < array.length; i++)
if(array == tal)
return true;
return false;
}

Så generer du et nyt tal hvis det eksisterer.

int tal;

do
{
int tal = rand.Next();
}
while(Findes(tal, ditArray);

Det der basalt sker her er: Vi giver vores random tal til en variabel, og det skal den gøre så længe tallet eksisterer i dit array. ditArray er så variablen til dit array.




Indlæg senest redigeret d. 15.03.2010 18:43 af Bruger #6559
Jeg skal have genereret 4 forskellige tilfældige tal mellem 1 og 8 - er der nogen der har forslag til hvordan jeg lettest gør det? :)

Tallene skal gemmes i et array, så jeg tænker det er noget med en løkke der kan gennemgå arrayet hver gang der findes et random tal og tjekke om det findes i forvejen ... eller hvad? :s



Jeg er altid for detaljéret -.-
PS: Beklager mine kommentarer er på engelsk, men jeg kan virkelig ikke fordrage dansk i min kode. Pseudo eller ej (Dette er ikke pseudo, btw)

Fold kodeboks ind/udKode 




Det eneste problem er køretiden - du kan ikke vide på hvilket tidspunkt du får et tal der ikke eksisterer i forvejen.

Jeg ville gå mere ad vejen Bertel foreslår, lav et array med tallene fra start til slut fx. [1, 2, 3, 4, 5, 6, 7, 8, 9]

så laver du et random tal mellem 0 og antallet af elementer i dit array, flytter det over i din liste og fjerner det fra dit array, sådan fortsætter du indtil du har de tal du skal bruge.



Et Array er ikke dynamisk i størrelse så jeg vil foreslå en arraylist:

tilfældigeTal vil som det ses, indeholde de fire tilfældige tal til sidst.

*edit* Mener at man kan fylde nogle konstanter ind i sin ArrayList allerede ved instatineringen. Så kan for loopet som fylder i arraylisten undlades. Men kan ikke lige huske hvordan.

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 16.03.2010 14:51 af Bruger #9814
Mange tak for svaret Brian BC - det er lige hvad jeg skal bruge :D



Det hele virker som det skal - jeg mangler så bare lige at kunne slette posterne i listen igen så jeg kan lave nye talkombinationer.

Jeg har prøvet med

muligeTal.RemoveAll();

men den giver fejl - jeg ved ikke om det er den rigtige måde at gribe det an på?

Edit: Har fundet ud af det, kiggede vist ikke ordentlig efter. muligeTal.Clear() :D



Indlæg senest redigeret d. 17.03.2010 22:10 af Bruger #15753
muligeTal er jo listen med tallene 1 til 8.

Så det må være tilfældigeTal du vil rydde? Det gøres med: Array.Clear(tilfældigeTal,0,4);





<< < 12 > >>
t