Random számok ismétlődés nélkül Pascalban?
Ilyet szeretnék:
tömb elemeinek száma pl. 10,
ebből kiválaszt 5 random számot, és kiírja őket. (Eddig megy is), de azt hogyan kéne, hogy ebben az 5 számban ne legyen ismétlődés, tehát egy szám csak 1x szerepeljen?
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
A.) megjegyzed egy másik tömbben, hogy már miket húztál ki és ezeket minden húzásnál ellenőrzöd
B.) a tömb kihúzott elemeit megjelölöd (pl -1-et írt a szám helyére), és húzásnál figyeled, hogy ne húzz ki -1-et
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
A tömb 10 eleme mind különböző (mert akkor a kérdés ekvivalens a tömbindexek egyediségével)? Ha igen, akkor itt egy statisztikai megoldás (C++-ban és ötöslottóra, de könnyedén átírhatod, hogy 1-10 válasszon számot és Pascal nyelven):
#include <iostream>
#include <cstdlib>
#include <ctime>
int main(int argc, char* argv[])
{
int pool(std::atoi(argv[1]));
int sample(std::atoi(argv[2]));
const int poolOrig(pool + 1);
std::srand(std::time(0));
for (; pool > 0; --pool)
{
if (std::rand() % pool < sample)
{
std::cout << poolOrig - pool << '\n';
--sample;
}
}
}
Ha nem, akkor vagy azt csinálod, mint az előző megoldás, vagy fogod a tömböt, és kiírtod belőle az ismétlődéseket (pl rendezed, és az egymás utána azonos értékű elemeket kilököd), és utána visszavezettük a kérdést az előzőre (csak nem 10 lesz az elemszám).
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
iostream: gratulálok az nem is pascal!
kérdező:
Program halmaz;
{A For ciklusban a ciklusváltozót nem ajánlatos piszkálni... ellenben a while és a repeat ciklusban igen...}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
program halmaz;
var
szam: integer;
h: set of byte;
i: byte;
BEGIN
h:= []; {uresre allitjuk a halmazt...}
randomize; {kell a veletlenszam generalashoz...}
repeat {ciklus amig...}
szam:= random(5)+1; {szam veletlenszeruen kap erteket 1..5 kozott}
if szam in h then continue {ha benne van, folytatjuk a ciklust..}
else begin {különben..}
include(h, szam); {szam-ot berakjuk a halmazba..}
write(szam, ' '); {kiiratjuk a kimenetre}
inc(i); {noveljuk i erteket...}
end;
until i = 5; {i egyenlove nem valik 5-el...}
readln;
END.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz0.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!