Moro miten saisin ohjelman helpoiten arpomaan 4 numeroa nollasta yhteen? Pitäis saada random väri.
vec4_t colorFont = { 1.0f, 1.0f, 0.4f, 1.0f }
Mitäs random() ilman parametreja palauttaa? Delphin puolella ainakin liukuluvun väliltä 0..1 , en sitten tiedä mitä kirjastoa saatat tarvita siihen.
Näin sain ainakin kompiloitua pitää kokeilla tekeekö sitten mitä halusin..
vec4_t colorFont = { (rand()%1) && "f", (rand()%1) && "f", (rand()%1) && "f", (rand()%1) && "f" };
Musta tuntuu että nuo kaikki 4 on nyt samoja lukuja. :D
EDIT: joo ei iha toiminu.. vois varmaa opetella vähä
En VC++:aa tunne, mutta veikkaan sen olevan lähellä parempia kavereitaan. Kirjoita ohjelmasi alkuun srand(time(0)), jotta saat seediluvun pyörimään eikä tule samoja lukuja jatkuvasti. Tuo srand taitaa kuitenkin kuulua C:n vakkarikirjastoihin. Kokeile ettii C++:n vastaava.
edit. ööö, mutta mitä noi && "f"
-kohdat ovat?
Heitänpäs hatusta tämmösen:
((float)rand())/RAND_MAX
Ja tarttee sitten stdlib.h:n tuota RAND_MAX:a varten.
En tiiä mitä ne kohdat on :D
Mutta ekassa viestissä on miten ne kuuluisi olla ilman random juttuja.
Ihan näin sivusta: kai sä tiedät, mitä toi "f" luvun perässä meinaa?
edit. tulee hätäiltyä näiden viestien kanssa. rand()%1 tosiaan palauttaa arvon kokonaislukuna, ja muutenkin aivan eri väliltä kuin 0...1. Tutustu Megantin menetelmään.
rand()%1 on jakojäännös, joka saadaan, kun rand() jaetaan luvulla yksi. Ja koska jako ykkösellä menee aina tasan, tulos on rand():sta riippumatta aina nolla. Megantin esimerkki on ihan toimiva. Funktio rand() siis palauttaa satunnaisen arvon siten, että 0 <= rand() <= RAND_MAX, eli jakamalla saatu satunnaisluku RAND_MAX:lla saadaan arvo välille [0,1]. Sekä rand() että RAND_MAX ovat kokonaislukuja, joten eteen tarvitaan Megantin esimerkissä oleva muunnos float-tyyppiseksi.
Edit: Niin, ja C:n "stdlib.h":ta vastaa käsittääkseni C++:ssa "cstdlib".
hunajavohveli kirjoitti:
Edit: Niin, ja C:n "stdlib.h":ta vastaa käsittääkseni C++:ssa "cstdlib".
Jos tarkkoja ollaan niin ei vastaa sitä vaan on se, mutta C++:ssa on tapana C:n kirjastojen nimen eteen laittaa tuo c-kirjain.
TsaTsaTsaa kirjoitti:
Jos tarkkoja ollaan niin ei vastaa sitä vaan on se, — —
Ei vaan nimenomaan vastaa. Olennainen ero on, että C++ sijoittaa myös C:n standardifunktiot std-nimiavaruuteen.
Höh, pitikin yrittää päteä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.