Kezdőoldal » Számítástechnika » Programozás » Hogy lehet megcsinálni hogy a...

Hogy lehet megcsinálni hogy a random számgenerátor ne ugyanazokat a számokat sorsolja ki?

Figyelt kérdés

pl.hogyha kisorsol egy számot 0-20 között akkor azt a számot mégegyszer ne használja fel.Itt tartok:

Random r = new Random();

int[] x= new int[1];

for (int y = 0; y < x.Length; ++y)

{

x[y] = r.Next(20);

Console.WriteLine(x[y]);

}

Console.ReadKey();



2015. okt. 23. 16:19
1 2
 1/11 anonim ***** válasza:

Csinálj egy 20 elemű tömböt, keverd össze (shuffle), és szép sorban random számokat fogsz kapni.


Vagy dobálj addig random számokat egy halmazba (set), amíg 20 méretű nem lesz.


Vagy tárold el a korábban generált számokat, és úgy generálj újat, hogy megnézed, van-e már (lineáris keresés): ha van, akkor újra generálsz, ha nincs, akkor eltárolod.

2015. okt. 23. 16:28
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:

De egy szűk másfél órája már kérdezték ezt:

http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..


Csak nem házi feladat?

2015. okt. 23. 16:29
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:

Csak gondolkozz kicsit. Ha azt akarod, hogy ne sorsolja ki azt, amit már kisorsolt, akkor értelemszerűen tárolnod kell a már kisorsoltakat, és minden generálásról végig kell ellenőrizned, hogy a már kisorsoltak között van-e a most sorsolt szám, és ha igen, akkor újat sorsolnod. Viszont vigyáznod kell, nehogy végtelen ciklusba kerüljön, amikor már elfogytak a számok.


Viszont sokkal egyszerűbb és kézenfekvő megoldás erre a feladatra amit az első válaszoló írt, ha összekeversz egy 1-től 20-ig tartó számokat tartalmazó tömböt.

2015. okt. 23. 16:38
Hasznos számodra ez a válasz?
 4/11 A kérdező kommentje:
Nem.Ez nem házi feladat.Az csak a véletlen műve.Köszönom a válaszokat megpróbálom fojtatni.Továbbrais minden jót.
2015. okt. 23. 16:54
 5/11 anonim ***** válasza:

Érdekes sor :D


int[] x= new int[1];

2015. okt. 23. 17:34
Hasznos számodra ez a válasz?
 6/11 anonim válasza:

Az egy egy elemű tömb... aminek sok értelmét nem látom... :)

...

Gondolj a lottó sorsolásra... Ha Tömb előző eleme létezik akkor, léptesse vissza a programot eggyel és próbálja újra :)

2015. okt. 23. 17:58
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:
Igen igen azt észrevettem én is hogy csak egy elemű,elfelejtettem átírni de gondolom igy is értetted.
2015. okt. 23. 18:17
 8/11 A kérdező kommentje:
Nos eljutottam odáig hogy szerintem do-while al kéne megcsinálni de nemtudom mit kéne vizsgálnia.help pls.
2015. okt. 23. 18:22
 9/11 anonim ***** válasza:

static void Main(string[] args)

{

int[] szamok = new int[20];

for (int i = 0; i < szamok.Length; ++i)

{

szamok[i] = i + 1;

}

Random r = new Random();

for (int i = szamok.Length - 1; i >= 0; --i)

{

int rnd = r.Next(0, i);

int temp = szamok[i];

szamok[i] = szamok[rnd];

szamok[rnd] = temp;

}

}

2015. okt. 23. 19:53
Hasznos számodra ez a válasz?
 10/11 A kérdező kommentje:
Köszönöm az utolsó válaszolónak és mindenki másnak is.
2015. okt. 23. 22:17
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!