IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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í.

Diskuze: Vybírání náhodných prvků z pole

Aktivity
Avatar
Preedy
Člen
Avatar
Preedy:30.8.2012 10:26

Ahoj, mám pole a v něm prvky :

int[] pole = new int[8] { 1, 2, 3, 7, 8, 9, 10, 11 };

S těch se snažím vybrat náhodné asi takhle:

Random n = new Random();
int los = nahoda.Next(pole[0], pole[9]);

ale při běhu mi to vyvolá výjimku, označí to řádek int los... je to kvůli tomu, že do mezí píšu indexy pole nebo se to dělá uplně jinak? díky

 
Odpovědět
30.8.2012 10:26
Avatar
Preedy
Člen
Avatar
Odpovídá na Preedy
Preedy:30.8.2012 10:27

má tam bejt pole[8], překlik

 
Nahoru Odpovědět
30.8.2012 10:27
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Preedy
David Jančík:30.8.2012 10:29

Jde o přetečení máš pole pro 9 prvků. Ale musíš si uvědomit že to začíná od 0. Tzn 9tý prvek je na 8mé pozici. Takže maximum je pole[8].

A podívej se sem. To pole se dá zakládat a plnit i jinak. A nemusíš tam definovat velikost když ho při deklaraci plníš. http://www.itnetwork.cz/…utorial-pole

Nahoru Odpovědět
30.8.2012 10:29
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Preedy
Člen
Avatar
Preedy:30.8.2012 10:33

dík, už to mám

 
Nahoru Odpovědět
30.8.2012 10:33
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Jančík
Kit:30.8.2012 10:37

Má tam jen 8prvkové pole. První prvek je pole[0], poslední je pole[7].

Nahoru Odpovědět
30.8.2012 10:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Kit
David Jančík:30.8.2012 10:44

Já sem ty prvky nepočítal jen jsem se podíval na rozsah a na ten řádek a z toho je hned zřejmé o co jde. Pak už je princip ošetření stejný :)

Nahoru Odpovědět
30.8.2012 10:44
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Mediel
Tvůrce
Avatar
Mediel:11.9.2012 14:13
int[] pole = new int[8] { 1, 2, 3, 7, 8, 9, 10, 11 };
Random n = new Random();
int los = n.Next(pole[0], pole[7]);

Console.WriteLine(los.ToString());
//Toto vratilo i hodnotu, kterou toto pole vubec neobsahuje "6" a to z duvodu, ze to vraci pozici, nikoli hodnotu na pozici
int[] pole = new int[8] { 1, 2, 3, 7, 8, 9, 10, 11 };
Random n = new Random();
int pozice = n.Next(0,7);
int hodnotaNaPozici = pole[pozice];

Console.WriteLine(hodnotaNaPozici.ToString());
// takto uz to fungovalo bezchybne :)
Editováno 11.9.2012 14:14
Nahoru Odpovědět
11.9.2012 14:13
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
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.