Random sortering af array?

Tags:    c#

Hej

Jeg leder en nem måde at randomize posterne i et array. Kan det virkelig passe .net ikke har en eller anden indbygget funktion til dette? Hvis ikke har nogen af jer så et forslag til hvordan dette skal gøres på en nem måde?

//Nick



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Hej

Jeg leder en nem måde at randomize posterne i et array. Kan det virkelig passe .net ikke har en eller anden indbygget funktion til dette? Hvis ikke har nogen af jer så et forslag til hvordan dette skal gøres på en nem måde?

//Nick


Jeg tror ikke der findes en metode i frameworket, der kan dette.
Jeg har fundet denne lille artikel der forklarer hvordan man blander et spil kort: http://www.publicjoe.f9.co.uk/csharp/card13.html

Jeg håber du kan få overført princippet til din applikation :)

Ellers kan jeg godt forklare hvad han gør..men så må du lige skrive.

Hilsen

Martin Dybdal (Dybber)



Hej

Jeg leder en nem måde at randomize posterne i et array. Kan det virkelig passe .net ikke har en eller anden indbygget funktion til dette? Hvis ikke har nogen af jer så et forslag til hvordan dette skal gøres på en nem måde?

//Nick


Jeg tror ikke der findes en metode i frameworket, der kan dette.
Jeg har fundet denne lille artikel der forklarer hvordan man blander et spil kort: http://www.publicjoe.f9.co.uk/csharp/card13.html

Jeg håber du kan få overført princippet til din applikation :)

Ellers kan jeg godt forklare hvad han gør..men så må du lige skrive.

Hilsen

Martin Dybdal (Dybber)


Har lige kigget hurtigt, og ser da ud til at princippet til en vis grad kan overføres til mit program, vil lige kigge på det her engang når jeg får tid. Skal nok lige skrive om jeg kan få det til at lykkes :)

//Nick



Jeg gar ud fra at du har lost dit problem, for jer andre er her et eksempel.

forst har vi en lille funktion til at udtage et tilfaldigt tal:

private int random(int limit)
{
DateTime tmeNow = DateTime.Now;
int mls = tmeNow.Millisecond;
Random rndNumber = new Random(mls);
return rndNumber.Next(limit);
}

// sa bruger vi arraylister i stedet for arrays:
sortedList = new ArrayList();
// fyld sortedList med elementer som skal i tilfaldig orden senere.
randomList = new ArrayList();


// tid for at fylde randomList i tilfaldig orden:
for (int i = sortedList.Count; i > 0; i--)
{
int rand = random(i);
randomList.Add(sortedList[rand]);
sortedList.RemoveAt(rand);
}

// Nu er randomList fyldt med de samme vardier som sortedList men i pseudo tilfaldig orden.

Beskrivelse:
Ved at bruge arraylister behover man ikke checke om man allerede har puttet et specifik element over i randomList, for elementet bliver fjernet fra sortedList nar det er "flyttet".
Egentlig er det nar et element bliver udtaget at det sker tilfaldigt, ikke nar man indsatter.





t