Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [VC++] Random RGB väri

Sivun loppuun

JussiR [21.03.2008 12:39:14]

#

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 }

User137 [21.03.2008 12:45:26]

#

Mitäs random() ilman parametreja palauttaa? Delphin puolella ainakin liukuluvun väliltä 0..1 , en sitten tiedä mitä kirjastoa saatat tarvita siihen.

JussiR [21.03.2008 12:56:30]

#

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ä

tgunner [21.03.2008 13:06:57]

#

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?

Megant [21.03.2008 13:20:49]

#

Heitänpäs hatusta tämmösen:

((float)rand())/RAND_MAX

Ja tarttee sitten stdlib.h:n tuota RAND_MAX:a varten.

JussiR [21.03.2008 13:21:40]

#

En tiiä mitä ne kohdat on :D
Mutta ekassa viestissä on miten ne kuuluisi olla ilman random juttuja.

tgunner [21.03.2008 13:28:32]

#

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.

hunajavohveli [21.03.2008 14:54:28]

#

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".

TsaTsaTsaa [21.03.2008 17:19:04]

#

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.

Metabolix [21.03.2008 20:58:41]

#

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.

TsaTsaTsaa [21.03.2008 21:10:22]

#

Höh, pitikin yrittää päteä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta