Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
vodslon
Člen
Avatar
vodslon:18.11.2014 17:03

Ahoj jeden začátečnickej dotaz, chtěl jsem poradit kolegovi v jiném vlákně a narazil jsem na problém, procházím všechny labely v gridu a náhodně jim přiřadí jméno. Zkoušel jsem to dělat více způsoby, ale pořád to samé. Když projet pustím přes F5 hodí to všem labelům stejné jméno, ale když si někam dám breakpoint a odkrokuji to celé, tak to labelům přiřadí náhodné jméno , což je správně? Jak je to možný ? :)

private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            foreach (Label l in Grid1.Children.OfType<Label>())
            {
                l.Content = JmenoZaka();
            }

        }

        private string JmenoZaka()
        {
            List<string> ListZaku = new List<string>();
            ListZaku.Add("Honza");
            ListZaku.Add("Karel");
            ListZaku.Add("Vašek");
            ListZaku.Add("Petr");
            ListZaku.Add("Lukáš");
            ListZaku.Add("Robert");

            Random r = new Random();
            int i = r.Next(ListZaku.Count);
            string a = ListZaku[i];

            return a;
        }
 
Odpovědět
18.11.2014 17:03
Avatar
Odpovídá na vodslon
Michal Žůrek - misaz:18.11.2014 17:09

protože když to provádíš rychle za sebou (bez krokování), tak to vždycky vygeneruje stejné číslo. Dej si tam mezi generaci čísla kód, který uspí vlákno na nějakou dobu
hodnota v parametru):

System.Threading.Thread.Sleep(10);

pokud to i přesto nebude fungovat zvyšuj to číslo v parametru.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
18.11.2014 17:09
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na vodslon
Jan Vargovský:18.11.2014 17:10

Vyhoď si ten random do třídy z té do metody. Generuje se to ze seedu a ten se bere ze systémového času.

 
Nahoru Odpovědět
18.11.2014 17:10
Avatar
vodslon
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
vodslon:18.11.2014 17:23

Obou moc děkuji za odpověď tušil jsem, že to bude tím, že to krokování mu veme více času. Uspávání vlákna funguje. Druhá rada mi ale příjde lepší v tom, že to nebudu muset hlídat, tam tedy jde o to aby se inicializace toho Randomu udělala dřív a v jiném čase?

 
Nahoru Odpovědět
18.11.2014 17:23
Avatar
Odpovídá na vodslon
Michal Žůrek - misaz:18.11.2014 17:33

to je jedno kdy se udělá. Důležité je kolikrát se udělá a jaký je mezitím časový rozdíl.

V tom tvém případě jsi to vytvářel milionkrát v stejném čase, takže on pokaždé vytvořil generátor se stejný základem a proto vždy vyplivl stejné číslo. Tím že to vytvoříš jednou nebo mezi vytvořením necháš posun času (= vytvoříš ho s jiným základem) ti vždy vygeneruje jiné číslo.

 
Nahoru Odpovědět
18.11.2014 17:33
Avatar
vodslon
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
vodslon:18.11.2014 17:35

rozumím, děkuji todle je dobrý vědět.

 
Nahoru Odpovědět
18.11.2014 17:35
Avatar
Odpovídá na vodslon
Luboš Běhounek Satik:18.11.2014 18:53

Proto je nejlepší si ten generátor iniciovat jednou na začátku.

Nahoru Odpovědět
18.11.2014 18:53
https://www.facebook.com/peasantsandcastles/
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 7 zpráv z 7.