Zamíchání kolekce – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zamíchání kolekce – .NET – Fórum – Programujte.comZamíchání kolekce – .NET – Fórum – Programujte.com

 

Kubas1290
Stálý člen
6. 8. 2021   #1
-
0
-

ahoj,

je nějaký způsob jak přes LINQ zamíchat list o 4 prvcích?

Díky :-)

Nahlásit jako SPAM
IP: 62.141.28.–
gna
~ Anonymní uživatel
1498 příspěvků
6. 8. 2021   #2
-
0
-

Obecně se míchání dělá tak, že projdeš všechny prvky a prohodíš je s jiným náhodným prvkem ze zbytku.

S LINQ můžeš třeba prvky seřadit podle náhodné hodnoty.

Random random = new Random();
randomized = original.OrderBy(x => random.Next()).ToList();
Nahlásit jako SPAM
IP: 213.211.51.–
Kubas1290
Stálý člen
7. 8. 2021   #3
-
0
-

#2 gna
přesně tohle jsem zkoušel, ale problém jsem měl s tím překonvertováním zpět.

List<string> jmena = new List<string> {"Karel", "Hynek", "Jozin"};
Random random = new Random();
var neco = jmena.OrderBy(x => random.Next()).ToList();

jmena = neco?
Nahlásit jako SPAM
IP: 62.141.28.–
gna
~ Anonymní uživatel
1498 příspěvků
7. 8. 2021   #4
-
0
-

Já C# až tak do hloubky neznám a nevím, co by na tom mohlo nefungovat. Jakou chybu ti to hlásí?

Nahlásit jako SPAM
IP: 213.211.51.–
JerryM0
Super člen
7. 8. 2021   #5
-
0
-

k čemu ti bude náhodný promíchání ???? to nechápu .. ty si asi zase nějakej noční hlídač co se nudí co ?

https://www.tutorialsteacher.com/linq/linq-sorting-operators-orderby-orderbydescending#orderby

jestli máš List<string> plnej záznamů tak určitě se timhle způsobem nic nemíchá ale dělá se externí indexační tabulka.

tady máš knížky o Linqu

https://www.programming-book.com/?s=linq

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:a463:eb1:bc2e:b683...–
gna
~ Anonymní uživatel
1498 příspěvků
7. 8. 2021   #6
-
0
-

#5 JerryM
Náhodné zamíchání kolekce je naprosto běžná věc. Což ty samozřejmě nemůžeš vědět.

Nahlásit jako SPAM
IP: 213.211.51.–
Kubas1290
Stálý člen
7. 8. 2021   #7
-
0
-

#2 gna
Ten List to podtrhává červeně

(Pawn je výčtový typ)

List<Pawn> freePawns = new List<Pawn> { Pawn.blue, Pawn.green, Pawn.red, Pawn.yellow };

freePawns = freePawns.OrderBy(x => ((Pawn)(new Random().Next(0,4))).ToList()); //Pawn does not cointain definition for ToList
            
for(int i=0;i<lobby.players.Length;i++)
{
  if (lobby.players[i] != null)
    lobby.players[i].Pawn = freePawns[i];
}
Nahlásit jako SPAM
IP: 62.141.28.–
Kubas1290
Stálý člen
7. 8. 2021   #8
-
0
-

#7 Kubas129
možná už to jde takto:

freePawns = freePawns.OrderBy(x => (new Random().Next(0,4))).ToList();

:-)

Nahlásit jako SPAM
IP: 62.141.28.–
JerryM0
Super člen
7. 8. 2021   #9
-
0
-

zkoušel sis někdy zjistit, jak je ta tvoje formulace rychlá/pomalá ? oproti indexační tabulce ?

Nahlásit jako SPAM
IP: 2a00:1028:83be:235a:a463:eb1:bc2e:b683...–
Kubas1290
Stálý člen
7. 8. 2021   #10
-
0
-

#9 JerryM
to ne, ale tak předpokládám že tento kod bude nejrychlejší

freePawns = freePawns.OrderBy(x => (new Random().Next(0,4))).ToList();

Nahlásit jako SPAM
IP: 62.141.28.–
Kit+15
Guru
7. 8. 2021   #11
-
0
-

#9 JerryM
Pro 4 objekty je vcelku jedno, jaký použije algoritmus.

Nahlásit jako SPAM
IP: 85.160.35.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 68 hostů

Podobná vlákna

TFS a kolekce — založil Jirka

Struktura kolekce — založil Kartik

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý