Kezdőoldal » Számítástechnika » Programozás » PHP feladatban segítség?

PHP feladatban segítség?

Figyelt kérdés

Valaki aki otthon van PHP-ben tudna segíteni egy feladatban?

Szóval létre kell hozni egy tömböt, amiben 20 db 5-35 között, rand() függvénnyel generált szám van, de nem lehet benne 2 ugyanolyan. Hogy lehetne ezt megoldani?

Köszi előre is!



2019. dec. 2. 19:05
1 2
 11/15 anonim ***** válasza:

2 megoldást tudsz:


ELSŐ:

Elkezded generálni a 20 számot

Amikor generálsz 1 számot megnézed benne van e már a tömbben, ha igen, akkor újra próbálkozol...

Addig amíg nem lesz 20 számod


MÁSODIK:

Létrehozol egy tömböt 5-35 közötti számokkal feltöltve, összekevered random őket és kiveszed belőle az első 20 számot.

2019. dec. 3. 10:16
Hasznos számodra ez a válasz?
 12/15 anonim ***** válasza:
#7 Miért kerülné ez meg a feladatot? A feladat egy 20 elemű tömb, amiben random, nem ismétlődő számok vannak 5 és 35 között. Az általáam vázolt megoldás tetszőleges intervallumra, tetszőleges mennyiségű számra alkalmazható, plusz biztosítja, hogy elemenként egyszer kell random számot sorsolni. Ez miért megkerülés?
2019. dec. 3. 20:02
Hasznos számodra ez a válasz?
 13/15 anonim ***** válasza:

"Miért kerülné ez meg a feladatot? A feladat egy 20 elemű tömb, amiben random,"


Azért kerüli meg, amit le is írtál.


Nyilván nem lesz random az a számhalmaz, amelyet úgy generáltatsz, hogy a generáló függvény határértékeit saját preferenciád szerint változtatod, csak hogy az egyéb munkát megspórold. Értem én a koncepciódat, de a tanárok azt szeretik, ha az adott feladatra adnak adekvát választ a tanulók a megoldásaikkal.

Itt a feladat egy számhalmaz generálása adott intervallumon belül és annak vizsgálata, hogy ne legyen két egyforma érték a halmazban.

Erre nem megoldás az, hogy úgy generáltatok egy halmazt, hogy már ne is kelljen duplikációt kizáró vizsgálatot végeznem.

Ha ez iskolai feladat lenne, akkor a munkádra valószinűleg karót kapnál.

2019. dec. 3. 20:34
Hasznos számodra ez a válasz?
 14/15 anonim ***** válasza:
#13 De, pontosan olyan random lesz, ez a metodika pontosan azt hivatott szimulálni, hogy ha a dobozban van 35 szám, és te kiveszel egyet, akkor 34 marad a dobozban. És van benne duplikáció ellenőrzés, mivel ki tudod húzni ugyanazt a számot, csak az intervallum csökkentése révén be tudod helyettesíteni a kihúzott számot egy még kihúzatlannal. Ez lényegében egy részleges shuffle algoritmus, ha mondjuk egy tömbben tárolnád a számaidat 5-től 35-ig, akkor minden sorsolás után a soron következő számot kicserélnéd,a kihúzott indexen levővel. Ezt csinálja az algoritmus, csak a tömb letárolása nélkül. A végeredmény ugyanúgy egy véletlenszerűen generált, egyenletes eloszlású (amennyire a rand() engedi) számsor. Melyik részét nem teljesíti ez a fealdatnak?
2019. dec. 3. 20:59
Hasznos számodra ez a válasz?
 15/15 anonim ***** válasza:

Lineáris időben egyszerűen megoldható a feladat, 2 tömb használatával.

Az egyik tömb legyen X (ebben lesz az eredmény), a másik pedig egy 36 elemű - vagy valójában 31 is elég, egy kis trükközéssel - in_X tömb, ami logikai (bool) változókból áll.

Amikor kisorsolsz egy számot (legyen “a”), megnézed, hogy az in_X[a] értéke hamis-e. Ha hamis, beszúrod az X tömb végére “a”-t, és az in_X[a] értékét igazra állítod. Ha pedig igaz, sorsolsz egy újabb számot.

Mindezt addig, amíg az X tömb elemszáma el nem éri a 20-at.

2019. dec. 3. 22:02
Hasznos számodra ez a válasz?
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!