Ratkaistu: kuinka luoda satunnaisia ​​kokonaislukuja tietystä alueesta c-kielellä

Viimeisin päivitys: 09/11/2023
Kirjoittaja: C SourceTrail

Satunnaisten kokonaislukujen luominen tietyllä alueella C-ohjelmointikielessä ei ole niin yksinkertaista kuin miltä se saattaa näyttää. C:llä itsessään ei ole tätä varten erillistä toimintoa, mutta se tarjoaa erilaisia ​​työkaluja, joita voidaan yhdistää tämän saavuttamiseksi. Näiden numeroiden luomisen taustalla oleva konsepti pyörii satunnaislukujen ja tietyn alueen hyödyntämisessä.

Kirjaimellisesti sanottuna tietyillä alueilla luodut satunnaisluvut voivat olla varsin käteviä monissa ohjelmointimaailman sovelluksissa, kuten yksilöllisten tunnusten luomisessa, tietokonegrafiikassa, peleissä, simulaatioissa, testaamisessa ja monissa muissa.

Kirjastot ja funktiot satunnaislukujen generoinnissa

Luodaksemme satunnaislukuja C:ssä käytämme stdlib.h ja aika. h kirjastot. The rand() -funktio on osa stdlib.h-kirjastoa, ja koska se ei ota argumentteja, se luo saman satunnaislukusarjan joka kerta, kun suoritamme ohjelman. Tämän hillitsemiseksi käytämme srand() toiminto, joka muuttaa pseudosatunnaisgeneraattorin siemenen.

#sisältää
#sisältää
#sisältää

int main () {
srand(aika(0));
for(int i = 0; i<5; i++){ printf(" %d ", rand()); } return 0; } [/koodi]

Ratkaisu: Luo satunnaislukuja tietyllä alueella

Yllä oleva koodi luo minkä tahansa satunnaisluvun. Luodaksesi satunnaisluvun tietyllä alueella, voit käyttää tätä kaavaa: (rand() % (ylempi – alempi + 1)) + alempi jossa alempi on alaraja ja ylempi on sen alueen yläraja, johon haluat satunnaisluvut.

Tässä on koko prosessin vaiheittainen erittely:

  • Ensinnäkin käytämme aika() toimintoa saadaksesi järjestelmän nykyisen ajan.
  • Sitten käytämme srand() toiminto satunnaisgeneraattorin siementämiseksi.
  • Sen jälkeen käytämme rand() toiminto satunnaisluvun luomiseksi.
  • Lopuksi tuomme luodun luvun halutulle alueelle käyttämällä yllä mainittua kaavaa.

Tässä on esimerkkikoodinpätkä:

#sisältää
#sisältää
#sisältää

int main () {
int alempi = 50, ylempi = 100;
srand(aika(0));
for(int i = 0; i<5; i++){ printf(" %d ", (rand() % (ylempi - alempi + 1)) + alempi); } return 0; } [/code] Yllä olevassa koodinpätkässä luodut satunnaisluvut ovat välillä 50 ja 100.

Koodin mystifioiminen

Huomaa, että välitimme `time(0)`:lle srand() toiminto. Tällä varmistetaan, että satunnaislukumme ovat mahdollisimman satunnaisia. aika() palauttaa nykyisen kalenterin ajan, joka vaihtuu sekunnissa, joten on hyvä idea käyttää sitä satunnaislukugeneraattorimme siementämiseen.

Kaava `(rand() % (ylempi – alempi + 1)) + alempi` saattaa näyttää ensisilmäyksellä hämmentävältä, mutta se on melko yksinkertainen. rand() luo satunnaisluvun. Kun otamme tämän luvun moduulin arvolla "(ylempi – alempi + 1)", saamme periaatteessa loppuosan luvun jaosta "(ylempi - alempi + 1)". Moduulioperaation tulos on aina pienempi kuin jakaja. Lisäämällä alarajan varmistamme, että satunnaislukumme on vähintään alaraja.

Nyt voit luoda satunnaislukuja millä tahansa C:n alueella! Hyvää ohjelmointia!

Related viestiä: