Potřeboval bych poradit!Potřebuju nastavit rozsah Math.randomu() na: Od druhěho prvku pole po předposlední prvek pole!(pole[1]-pole[pole.length-1]).A ještě ošetřit aby už navracela hodnoty, které už vrátila!Moc dííkec!
Potřeboval bych poradit!Potřebuju nastavit rozsah Math.randomu() na: Od druhěho prvku pole po předposlední prvek pole!(pole[1]-pole[pole.length-1]).A ještě ošetřit aby už navracela hodnoty, které už vrátila!Moc dííkec!
P4 2,4GHz 533 MHZ FSB, MSI 6580 Intel845P, 512 DDR 333MHZ, ATI RADEON 8500 128 MB DDR, SEAGATE 80GB&IBM 36 GB, 3dmark2001 - 8050b,3dmark 2003 - 1100b, AquaMark3 - 15000b
Ehmm, promin, ale asi jsem dobre neporozumel zadani....
pozn: pole.length-1 neni predposledni, ale posledni prvek pole.
No, predpokladam, ze chces nieco taketo:
(kde myArray je to (aspon trojprvkove) pole a myRandomNumber je nahodne vybrany index v tom poli vynimajuc prvy & posledny index)Kód:int myRandomNumber = (int)Math.floor(Math.random() * (myArray.length - 2)) + 1;
A Math.random() neprinutis, aby Ti viackrat nevratila rovnaku hodnotu... to si uz musis osetrit sam.
Intel Core 2 Duo E6600 @ 3.2GHz (8 * 400MHz) @ 1.3V with Zalman CNPS9500 AT @ 1800RPM, ASUS P5B Deluxe/WiFi, 2x1GB Corsair Twin2X PC2-6400 DDRAM @ 400MHz (4-4-4-12) @ 2.1V, Leadtek 8800GT 512MB, WD Caviar SE16 250GB, Asus DRW-1608P3S, Creative SB Audigy Value, Logitech X-230 speakers, Enermax Liberty 400W, 2x120mm Thermaltake case fan @ 1800RPM, Thermaltake Aguila black case, HP LP2065 LCD, Logitech MX400
sisi: tak to jsem teda pochopil uplne jinak. Podle me chce vracet takove nahodne cislo, ktere uz se vyskytuje v tom poli nekde od 1. po predposledni prvek a zaroven se toto vracene cislo nesmi opakovat ? ? ?
A nebo snad chce to pole plnit nahodnym neopakujicim se cislem ? ? ?
Jo a mezi nama - Math.random() k cili asi nepovede, to spis java.util.Random
Moze byt... ale je to to iste ako vyberat nahodne (neopakujuci sa) index.Původně odeslal viki_
To je uz snad jedno... Math.random() je len "convenience wrapper" nad Random - i tak si bude musiet sam zariadit to neopakovanie cisiel, co by uz ale mohol zvladnut aj sam...Jo a mezi nama - Math.random() k cili asi nepovede, to spis java.util.Random![]()
Intel Core 2 Duo E6600 @ 3.2GHz (8 * 400MHz) @ 1.3V with Zalman CNPS9500 AT @ 1800RPM, ASUS P5B Deluxe/WiFi, 2x1GB Corsair Twin2X PC2-6400 DDRAM @ 400MHz (4-4-4-12) @ 2.1V, Leadtek 8800GT 512MB, WD Caviar SE16 250GB, Asus DRW-1608P3S, Creative SB Audigy Value, Logitech X-230 speakers, Enermax Liberty 400W, 2x120mm Thermaltake case fan @ 1800RPM, Thermaltake Aguila black case, HP LP2065 LCD, Logitech MX400
Paráda dík!Snad to nějak zesmolím!Sem začátečník takže toho ještě moc nevím!Chtěl sem prostě v poli přeházet hodnoty ale první a poslední prvek aby zůstal na své pozici!Moc dík!
P4 2,4GHz 533 MHZ FSB, MSI 6580 Intel845P, 512 DDR 333MHZ, ATI RADEON 8500 128 MB DDR, SEAGATE 80GB&IBM 36 GB, 3dmark2001 - 8050b,3dmark 2003 - 1100b, AquaMark3 - 15000b
No podle me to neni to same - co kdyz se v tom poli napr. bude vickrat opakovat stejne cislo ? Napr. pole [1,2,5,3,5,4,5,5,5,1]Původně odeslal sisi
- kdyz bych chtel vracet nahodne cislo v rozsahu 1-5 nebude to totez jako vybirat nahodny index, protoze napr. cetnost cisla 5 je vetsi nez cisla 1.
Aha, tak to som zase ja presne nepochopil, co si mal mysli. V takomto pripade to samozrejme jedno nie je...Původně odeslal viki_
![]()
Intel Core 2 Duo E6600 @ 3.2GHz (8 * 400MHz) @ 1.3V with Zalman CNPS9500 AT @ 1800RPM, ASUS P5B Deluxe/WiFi, 2x1GB Corsair Twin2X PC2-6400 DDRAM @ 400MHz (4-4-4-12) @ 2.1V, Leadtek 8800GT 512MB, WD Caviar SE16 250GB, Asus DRW-1608P3S, Creative SB Audigy Value, Logitech X-230 speakers, Enermax Liberty 400W, 2x120mm Thermaltake case fan @ 1800RPM, Thermaltake Aguila black case, HP LP2065 LCD, Logitech MX400
He he, tak to mi pripada jako odlisne zadaniPůvodně odeslal Kenny
- proc to nereknes rovnou ? A jakeho typu jsou prvky toho pole ? Objekty nebo nejaky primitivni datovy typ - treba int ?
To pole je datového typu char!Měl sem za úkol ze školy napsat program který načte ze standartního vstupu string a vněm na každe slovo aplikovat to sčím sem potřeboval poradit!Prostě začateční písmeno a koncové ponechat a uvnitř slova náhodně rozházet!Na výstupu musí byt takto upravený string.Už to mám akorát nemám ošetřené opakování indexu toho náhodného charu.
P4 2,4GHz 533 MHZ FSB, MSI 6580 Intel845P, 512 DDR 333MHZ, ATI RADEON 8500 128 MB DDR, SEAGATE 80GB&IBM 36 GB, 3dmark2001 - 8050b,3dmark 2003 - 1100b, AquaMark3 - 15000b
Kenny: Ja bych radsi na to michani pouzil treba Collections.shuffle(), at clovek znovu nevynaleza kolo.
Kód:/* * RandomPokus.java * * Created on 13. prosinec 2003, 9:43 */ import java.util.*; public class RandomPokus { private RandomPokus() { } public static List toCharList(char[] _array, int _start, int _end) { List ret = new ArrayList(); for(int i=_start; i<_end; i++) ret.add(new Character(_array[i])); return ret; } public static char[] shuffleIt(char[] _array) { if( (_array==null)||(_array.length<4) ) return _array; //zamichat List list = toCharList(_array, 1, _array.length - 1); Collections.shuffle(list); //nove vystupni pole char[] ret = new char[_array.length]; for(int i=0; i<list.size(); i++) ret[i+1] = ((Character)(list.get(i))).charValue(); ret[0] = _array[0]; ret[_array.length - 1] = _array[_array.length - 1]; return ret; } public static void main(String[] args) { String slovo = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[] shuffled = shuffleIt(slovo.toCharArray()); System.out.println(slovo); System.out.println(new String(shuffled)); } }
Ty si blazen!Tos vševchno napsal kvuli mně?Tak dík!Já to zkusím použít, ale nevím jestli to zvládnu!Moc dík
P4 2,4GHz 533 MHZ FSB, MSI 6580 Intel845P, 512 DDR 333MHZ, ATI RADEON 8500 128 MB DDR, SEAGATE 80GB&IBM 36 GB, 3dmark2001 - 8050b,3dmark 2003 - 1100b, AquaMark3 - 15000b
Jasne brouku- no mezi nama - vic jak 5 minut to nezabralo.
Tak to si blázen!Ted se mě asi budeš smát když ti napišu, že tomu moc nerozumím!Nebo spíš aji jo, ale můj program je jenom s metodou main a nic jiného!Takže si nedokážu představit jak tam nacpu to cos mně napsal!
Můj program vypadá takto:
Kód:import java.util.*; import java.io.*; public class SemestralniProjekt11{ public static void main (String[]args){ String retezec; String rozdel = new String(); String end = new String(); String mezera = " "; BufferedReader r; r = new BufferedReader(new InputStreamReader(System.in)); while (true){ try { System.out.println("\nVloz retezec: "); retezec = r.readLine(); if (retezec == null){ break; } StringTokenizer st = new StringTokenizer(retezec,mezera); while (st.hasMoreTokens()){ rozdel = st.nextToken(); char[] pole = new char[rozdel.length()]; //Vytvoreni pole o velikosti slova char[] pole2 = new char[rozdel.length()]; //Vytvoreni pole o velikosti slova for (int i=0;i<rozdel.length();i++){ //Nacitani slova ze stringu do pole pole[i] = rozdel.charAt(i); //Nacitani slova ze stringu do pole } pole2[0]=pole[0]; //Zakotveni prvniho znaku pole pole2[pole2.length-1]=pole[pole.length-1]; //Zakotveni posledniho znaku pole for (int i=1;i<pole.length-1;i++){ int a = (int)(Math.random() * (pole.length - 2)) + 1; //Vyber nahodne pozice pole2[i]=pole[a]; //vlozeni do pole2 na i-tou pozici prvek s pole s nahodnou pozici } String pomoc = new String(pole2); //Vytvoreni stringu pomoc z pole2 end = end.concat(pomoc); //Spojeni stringu end a pomoc end = end.concat(mezera); //Pridana mezere na konec stringu end } System.out.println("\nZnetvoruji: "+end); end = new String(); //Nulovani stringu end } catch (Exception e){ System.out.println("Chyba cteni!"); break; } } System.out.println("Konec!"); } }
P4 2,4GHz 533 MHZ FSB, MSI 6580 Intel845P, 512 DDR 333MHZ, ATI RADEON 8500 128 MB DDR, SEAGATE 80GB&IBM 36 GB, 3dmark2001 - 8050b,3dmark 2003 - 1100b, AquaMark3 - 15000b
Takze:
1. dej to do tagu Code (tlacitko na liste nad oknem, kam se zadavaji prispevky)
2. char[] pole vytvaris zbytecne slozite - staci napsat: char[] pole = rozdel.toCharArray();
3. jak to tam nacpes ? - uplne jednoduse - slovo, ktere chces upravit zadas jako parametr do metody shuffleIt a vysledkem je upravene "slovo" - musi to byt uplne jasne, kdyz se podivas na main() v tom mem programku.
Tzn., ze StringTokenizerem si rozsekas vstup na jednotliva slova, ktera jen prozenes tou funkci.
pokusím se!thanks
P4 2,4GHz 533 MHZ FSB, MSI 6580 Intel845P, 512 DDR 333MHZ, ATI RADEON 8500 128 MB DDR, SEAGATE 80GB&IBM 36 GB, 3dmark2001 - 8050b,3dmark 2003 - 1100b, AquaMark3 - 15000b
Tak vlozil sem to dotoho vpohodě, ale nešlo by to bez těch metod?prostě jenom do teho mainu?Já vím, že je to zbytečně složitější, ale ještě se moc v metodách neorientuju!Některým věcem cos tam psal trošku nerozumím!
P4 2,4GHz 533 MHZ FSB, MSI 6580 Intel845P, 512 DDR 333MHZ, ATI RADEON 8500 128 MB DDR, SEAGATE 80GB&IBM 36 GB, 3dmark2001 - 8050b,3dmark 2003 - 1100b, AquaMark3 - 15000b
Tak na to rychle zapomen - jenom pekne pouzivej metodyPůvodně odeslal Kenny
.
Tak třeba nerozumím tomuto:
Musím otom něco vědět!protože to musím nějak popsat!ThanksKód:for(int i=_start; i<_end; i++) ret.add(new Character(_array[i])); toto je to míchání? Collections.shuffle(list); toto taky moc nevim!Co je Character?a list.get()? - to je součást metody Collections.shuffle(); ret[i+1] = ((Character)(list.get(i))).charValue();
P4 2,4GHz 533 MHZ FSB, MSI 6580 Intel845P, 512 DDR 333MHZ, ATI RADEON 8500 128 MB DDR, SEAGATE 80GB&IBM 36 GB, 3dmark2001 - 8050b,3dmark 2003 - 1100b, AquaMark3 - 15000b
cele je to zalozeno na staticke metode Collections.shuffle(list). ktera nahodne zamicha List.
Nas problem je v tom, ze mame pole primitivniho datoveho typu char[] - to nelze zpracovat touto metodou primo. Musime ho nejakym zpusobem prevest na List. (k vytvoreni Listu tam mam metodu toCharList() )
Character je objektovy typ pro char (podobne jako napr. Integer pro int atp.)
metody v Listu: add(prvek) = pridani prvku, get(i) - nacteni prvku na pozici i (viz dokumentace)
Takze obsah pole hodime do Listu, ten se zamicha a zamichany List zpet do pole, pricemz se musi osetrit jeste ten prvni a posledni prvek. To je vsechno.
tohle vezme z listu prvek na pozici i a prevede ho zpatky na typ char (v Listu jsou Objekty typu Character = obalovy objektovy typ pro char)Kód:ret[i+1] = ((Character)(list.get(i))).charValue();
Ok!Thanks!Pořádně si to musím projít!
P4 2,4GHz 533 MHZ FSB, MSI 6580 Intel845P, 512 DDR 333MHZ, ATI RADEON 8500 128 MB DDR, SEAGATE 80GB&IBM 36 GB, 3dmark2001 - 8050b,3dmark 2003 - 1100b, AquaMark3 - 15000b
Samozrejme, ze by se to michani dalo udelat primo vlastnim algoritmem jak si to delal puvodne:
nekde bokem na hromadce by sis drzel indexy prvku, ktere jeste nebyly prohozene a z toho by se nahodne vybiralo, prohozene prvky by se z tohoto seznamu odebraly - tim by se zajistilo, at se jejich vyber neopakuje - to by taky nebylo slozite, ale bylo by s tim trosku vic prace.
Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)