miten c:ssä alustetaan satunnaisluku generaattori entä miten saadan muuttujalle luku arvoksi joku alueelta 1-1000 entä mihin kirjastoon nämä komennot kuuluvat?
Stdlib.h:sta löytyy random()-funktio. Sulkujen väliin tulee numero n, sen ja nollan väliltä generoidaan. Generaattori alustetaan randomize():lla.
hunajavohveli:
Mitä kääntäjää oikein käytät? Ei tuommoisia Visual C++:ssa ole!
#include <stdlib.h>
rand()
antaa luvun 0 .. RAND_MAX (0 .. 0x7fff)
srand()
asettaa siemenluvun annettuun arvoon.
#include <time.h>
time()
palauttaa ajan.
srand((unsigned)time(0));
asettaa siemenluvun ajan mukaan; hyvä tapa alustaa generaattori.
(X * rand() / RAND_MAX)
antaa satunnaisen luvun 0 <= n < X
.
Metabolix kirjoitti:
Mitä kääntäjää oikein käytät? Ei tuommoisia Visual C++:ssa ole!
Borland C++ 5.0. Tuommoiset löytyy sen stdlib:stä. En minä Visual C++:sta tiedä. Eikä dungeon86 kertonut, mitä kääntäjää käyttää.
Fakta on kuitenkin, että standardikirjastoon kuuluuvat rand() ja srand(), *ei* random() ja randomize(). Kannattaa myös muistaa, ettei RAND_MAX:n saa olettaa olevan aina 0x7fff.
Yksi tapa generoida satunnaisluku väliltä [0, n - 1] on "rand() % n".
Borlandista nuo löytyvät, koska Pascal sisältää vakiona Random ja Randomize-funktiot ja C++Builder on yritetty tehdä yhteensopivaksi Delphin, Borlandin tärkeämmän tuotteen, kanssa.
ja fawkz:
Tuo tapa on siinä mielessä huonompi, että esim rand() % 0x7F9B
antaa lukuja sataan asti kaksinkertaisesti muihin nähden. Toisaalta, harvoinpa sillä on niin merkitystä.
Ja tosiaan, RAND_MAX on muuttuva vakio, ja siksi juuri kirjoitinkin sulkuihin sen lukuarvon.
ongelma on selvä, löytyi ihan tuolta oppaista vastaus
Aihe on jo aika vanha, joten et voi enää vastata siihen.