Kezdőoldal » Számítástechnika » Programozás » Hogyan kell C++ programozásban...

Legovix kérdése:

Hogyan kell C++ programozásban véletlenszerűen számokat kiírni, hogy ne legyen ismétlés benne?

Figyelt kérdés

Kikötések:

- 45 elemű tömböt kell sorban számokkal feltölteni (1-től 45-ig)

- 6 db egész számot kell "kihúzni"

- NEM ISMÉTLŐDHETNEK A KIÍRT SZÁMOK!


Előre is köszönöm a segítségeteket!



2021. márc. 21. 17:56
1 2
 1/20 anonim ***** válasza:
67%
Generálsz egy számot, megnézed hogy volt-e már, ha volt akkor generálsz egy másikat, ha nem volt akkor meg eltárolod. Ismétled amíg be nem töltöd a listát.
2021. márc. 21. 18:00
Hasznos számodra ez a válasz?
 2/20 anonim ***** válasza:
..most látom, hogy felületesen olvastam, és nem 45 random szám kell neked, hanem 6 elem a 45 generált számból. Végső soron ugyanazt javasolnám, egyedi számokkal töltsd fel, ha csak 45 random számmal töltöd fel nem garantált hogy lesz benne 6 egyedi - nyilván valószínű, de azért köti hogy nem lehet ismétlődés mert azt várja hogy úgy oldd meg hogy ne lehessen ismétlődés.
2021. márc. 21. 18:02
Hasznos számodra ez a válasz?
 3/20 tabaki ***** válasza:

„Végső soron ugyanazt javasolnám, egyedi számokkal töltsd fel...”


Már csak azért is, mert egytől negyvenötig véletlenül csupa egyedi szám van sorba rakva, úgyhogy bonyodalmas lenne másként cselekedned. Ami a húzást illeti, nincs megadva, hogy a tömböt változatlanul kell hagynod, tehát nem kötelező a kihúzott számot az eddigiekkel összehasonlítgatni, a tömbben is bejelölheted, hogy a szám már nem játszhat, például a tömbelem mínuszra vagy mondjuk százzal nagyobbra állításával.

2021. márc. 21. 18:18
Hasznos számodra ez a válasz?
 4/20 anonim ***** válasza:
Nem kell semmit osszehasonlitgatni, feltoltod a tombot a 45 szammal, csinalsz rajta egy Fisher-Yates shuffle-t es kiirod az elso 6-ot.
2021. márc. 21. 18:48
Hasznos számodra ez a válasz?
 5/20 tabaki ***** válasza:
0%

@#4:

Ez is egy használható lehetőség, bár az a gyanúm, hogy az általam javasolt azzal együtt is gyorsabb, hogy az is igényel összehasonlításokat. Ezenkívül van még egy előnyére magyarázható rejtett tulajdonsága, nevezetesen, hogy a kiírandó számok sorrendje megmarad. Ez mindössze annyiban érdekes, hogy a feladat kimondatlanul, de nagyjából a hatoslottót modellezi, miért ne hasonlíthatna rá ebben is – véletlenszerűen húzol, és végül emelkedő sorrendben írod ki.

2021. márc. 21. 19:59
Hasznos számodra ez a válasz?
 6/20 anonim ***** válasza:
Amúgy elsőre: Az nem jó megoldás, hogy ellenőriz és ha már van akkor újat generál. Ez végtelen ciklusba futhat. Ugyan kevés az esélye, hogy mindig ugyanazt generálja, de egy programozónak ezt is számításba kell venni, hiszen ez sem lehetetlen helyzet. :)
2021. márc. 21. 21:14
Hasznos számodra ez a válasz?
 7/20 tabaki ***** válasza:
0%
Hajh, bizony, igazad van. Senki sem olyan öreg, hogy ne érhetne meg még egyetlen tavaszt – vélekednek a bölcs kínaiak, és itt is efféléről van szó: Semmilyen hosszúságú azonos számokból álló véletlensorozat nem garantálja, hogy ne jöhessen ki még egyszer ugyanaz a 42, mint az előző nyolcszáznegyvenhétbilliárd alkalommal. Viszont az a sejtésem, hogy a Fisher-Yates shuffle megvalósítását hasonló problémák terhelik, ezért leghelyesebb, ha az ember búcsút int a programozásnak, és inkább pizzafutárnak szegődik.
2021. márc. 21. 22:24
Hasznos számodra ez a válasz?
 8/20 anonim ***** válasza:
A shuffle megoldásnál minden esetben pontosan 6db véletlenszámot kell generálni (akkor is, ha mind a 6 véletlenszám megegyezik).
2021. márc. 21. 22:52
Hasznos számodra ez a válasz?
 9/20 anonim ***** válasza:

[link]

Bár ez JavaScript-ben van megoldva, könnyen át tudod írni C++-ra.

2021. márc. 22. 08:20
Hasznos számodra ez a válasz?
 10/20 anonim ***** válasza:
2021. márc. 22. 11:42
Hasznos számodra ez a válasz?
1 2

További 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

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!