nahodne cislo z mnoziny [pascal]

Programovacie jazyky, rady, poradňa...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

nahodne cislo z mnoziny [pascal]

Príspevok od používateľa BX »

Zdravim, naozaj si nejako neviem rady s tymto, pretoze neviem v pascale polia a zevraj sa to roby cez ne :)
Ide o to ze chcem vygenerovat nahodne cislo z mnoziny napr.{4,5,6,7,8}
Nie od jednotky, ale iba zo zadanych hodnot... v podstate K+ zadarmo :)
Dakujem vopred...
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Niekde musíš mať tie čísla uložené. Ak sú v poli, tak je to jednoduché. Vygeneruješ si náhodné číslo v rozsahu 1 - počet prvkov v tom poli...
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

ako som uz pisal polia NEVIEM, tagze mi treba nejaky kus zdrojaku...
ak sa to ale da inak tak privitam radsej to :)
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

Okrem toho poľa mi napadajú už len dve možnosti:
1. case (vygeneruješ náhodné číslo a v case potom vrátiš to číslo z tvojho zoznamu).
2. urobíš si nejaký vzorec, ktorý pre náhodné čísla dá všetky tie čísla, ktoré potrebuješ. :)
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

No uz je noc, tagze ani jedno z toho som nepochopil :oops:
To druhe este chapem, no na to sa teraz uz nezmozem, ale to case som vazne nepochopil ako sa to da...
konyk87
King
King
Používateľov profilový obrázok
Príspevky: 1709
Registrovaný: 24 okt 2007, 15:56

Príspevok od používateľa konyk87 »

neviem sice ake cisla vracia funkcia random() v pascale, ale ak random(20) vrati cele cisla 0-19, tak tvoja spomenuta mnozina sa da vygenerovat aj prikazom random(5) + 4
... random vrati cislo 0-4 a k nemu pripocitas 4 - tym padom sa ti budu generovat cisla 4-8.. :)

\\tento sposob je vsak vhodne pouzit ak cisla z mnoziny, z ktorej chces generovat "idu za sebou", t.j. {3, 4, 5, 6} alebo {23, 24, 25, 26, 27, 28}..
ak by ich bolo par vynechanych, tak by sa to este mozno dalo osetrit nejakymi podmienkami..ak by bola ta mnozina (viacmenej) nahodna, tak tento sposob zrejme nebude fungovat, napr {-3, 42, 10, 7, -8, 23}
chrono
VIP
VIP
Používateľov profilový obrázok
Príspevky: 7127
Registrovaný: 25 dec 2006, 15:17

Príspevok od používateľa chrono »

BX napísal:No uz je noc, tagze ani jedno z toho som nepochopil :oops:
To druhe este chapem, no na to sa teraz uz nezmozem, ale to case som vazne nepochopil ako sa to da...
Len som ti chcel naznačiť, že ak sa ti nepáčia polia, nič jednoduchšie už asi nenájdeš. ;)
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

Takto by to mohlo vyzerat s pouzitim pola. :wink:

Kód: Vybrať všetko

program cisla;
const
POCET = 5;
pole: array[1..POCET] of integer = (4,5,6,7,8);

begin
randomize;
writeln('Vygenerovane cislo: ', pole[random(POCET)+1]);
readln;
end.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

BX napísal:ako som uz pisal polia NEVIEM, tagze mi treba nejaky kus zdrojaku...
ak sa to ale da inak tak privitam radsej to :)

Kód: Vybrať všetko

uses crt;
var pole:array[1..5] of integer;  /* patprvkove ciselne pole */
begin
clrscr;
randomize;  /* znovunastavenie generatora pseudonahodnych cisel */
  pole[1] := 3;  /* postupne naplnenie pola nejakymi hodnotami */
  pole[2] := 32;
  pole[3] := 4;
  pole[4] := 6;
  pole[5] := 7;
  writeln(pole[random(5)+1]);  /* vypisanie nahodneho prvku */
  repeat until keypressed;  /* cakanie na klaves */
end.
//damn! neskoro :(
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

OK dakujem velmi silno :) Chcel som to robit tak ze dam a:=random(5) a potom dam vypisat write(a+40) aby vypisovalo od 40 do 45 :-D Ale asi to spravim poliami...
diki moc.
neutronmind
Expert
Expert
Príspevky: 189
Registrovaný: 05 aug 2008, 14:17

Príspevok od používateľa neutronmind »

Zalezi od konkretneho zadania. Ak mas vypisovat nahodne cisla len z nejakeho intervalu, tak polia nemusis pouzit a riesit to tak, ako si pisal v poslednom prispevku. Ak by si vsak mal generovat cisla z nejakej lubovolne danej mnoziny, napr. {10, 15, 123, 350}, tak pole musis pouzit. :wink:
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Príspevok od používateľa BX »

No hej teraz mam cisla za sebou, ale ak by som sa stretol s mnozinou hociakych cisel tak aspon budem vediet ako to urobit...
Napísať odpoveď