Forum » Programiranje » [C++] Random "ne dela"?
[C++] Random "ne dela"?
Twix ::
Torej mal se igram z enim programčkom; spodnja koda naključno generira 10 števil, ki se nebi smele ponavljati, ampak enkrat deluje pravilno, drugič se številke ponovijo.. Vem, da se da drugače nardit , ampak mene zanima konkretno tukj zakaj enkrat deluje, drugič ne?
Output: - Napačen http://codepad.org/o2vIK1XU
8 5 4 7 8
9 3 1 2 0
Pravilen: http://codepad.org/juaU8JHo
3 1 9 8 0
2 3 6 7 5
Kaj delam narobe? Ni mi jasno :/ Hvala
#include <iostream> using namespace std; int main() { int tab[10] = { 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 }; srand(time(NULL)); int x; int a=0; for(int i=0; i<2; i++) { for(int j=0; j<5; j++) { x=rand()%10; for(int k=0; k<10; k++) { if(tab[k]==x) { x=rand()%10; k=0; } } tab[a++]=x; cout<<" "<<x; } cout<<endl; } return 0; }
Output: - Napačen http://codepad.org/o2vIK1XU
8 5 4 7 8
9 3 1 2 0
Pravilen: http://codepad.org/juaU8JHo
3 1 9 8 0
2 3 6 7 5
Kaj delam narobe? Ni mi jasno :/ Hvala
The world is a dangerous place, not because of those who do evil,
but because of those who look on and do nothing. Apple has a patent on patent-
ing things they didn't invent. arka putana! :D hašek :D HVALA EDWARD SNOWDEN!
but because of those who look on and do nothing. Apple has a patent on patent-
ing things they didn't invent. arka putana! :D hašek :D HVALA EDWARD SNOWDEN!
Blinder ::
if(tab[k]==x) { x=rand()%10; k=0; }
Mogoče je tle problem. x naprimer je 8 in je že vsebovan v tabeli. Torej on gre ponovno dodelit random vrednost x-u in včasih se zgodi, da mu dodeli glih 8.
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija
Mavrik ::
Problem je v tem, da v primeru, če najdeš podvojeno število v tabeli zbereš naključnega novega, potem pa NE preveriš a je tisto novo število že v tabeli ;)
The truth is rarely pure and never simple.
amacar ::
Problem je, da namesto da daš k=0, ga daj na -1, ker se iz 0 takoj spremeni na 1 in zato ne preverja elementa na tab[0].
Twix ::
Jap maš prov, zanka ne začne od nule, ko spremenim k, ampak k poveča za 1.
Ma sj sm čorav, če bi mal bolj pogledal rezultate bi lahko opazu, da, kadar pride do ponovitve, je vedno ponovljena prva številka..
k se vedno, ko pride do primerjanja postvi na 0 oziroma -1 in tko začne spet primerjat..
Hvala za tko hitre odgovore
Ma sj sm čorav, če bi mal bolj pogledal rezultate bi lahko opazu, da, kadar pride do ponovitve, je vedno ponovljena prva številka..
if(tab[k]==x)
{
x=rand()%10;
k=0;
}
Mogoče je tle problem. x naprimer je 8 in je že vsebovan v tabeli. Torej on gre ponovno dodelit random vrednost x-u in včasih se zgodi, da mu dodeli glih 8.
k se vedno, ko pride do primerjanja postvi na 0 oziroma -1 in tko začne spet primerjat..
Hvala za tko hitre odgovore
The world is a dangerous place, not because of those who do evil,
but because of those who look on and do nothing. Apple has a patent on patent-
ing things they didn't invent. arka putana! :D hašek :D HVALA EDWARD SNOWDEN!
but because of those who look on and do nothing. Apple has a patent on patent-
ing things they didn't invent. arka putana! :D hašek :D HVALA EDWARD SNOWDEN!
Zgodovina sprememb…
- spremenil: Twix ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | KeyloggerOddelek: Programska oprema | 2615 (1342) | Blisk |
» | Linksys WRT54G In Tomato Firmware (strani: 1 2 )Oddelek: Omrežja in internet | 18720 (11657) | Hayabusa |
» | linux vprašanje nujnoOddelek: Pomoč in nasveti | 1474 (1408) | fokz8 |
» | Pomnilnik - nastavitveOddelek: Pomoč in nasveti | 808 (711) | Xserces |
» | IIS 6.0 LOGOddelek: Operacijski sistemi | 1001 (972) | Mr.B |