1. Panimula
Sa programming, ginagamit ang mga random na numero para sa iba’t ibang layunin at lalo na itong laganap sa wikang C. Ang mga random na numero ay mahalagang konsepto na ginagamit sa maraming senaryo, tulad ng paglikha ng mga sitwasyon sa laro, pagsasagawa ng random sampling, at pag-shuffle ng data. Sa artikulong ito, ipapaliwanag namin nang detalyado kung paano lumikha ng mga random na numero sa C at magbibigay ng mga halimbawa kung paano ito magagamit sa praktika. Sa pamamagitan ng pag-unawa sa pagbuo ng random na numero sa C, mapapalawak mo ang iyong kakayahang gamitin ito nang epektibo.
2. Ano ang Random na Numero?
Ang Konsepto ng Random at Pseudorandom na Numero
Ang random na numero ay tumutukoy sa isang halaga na hindi mahulaan at karaniwang nililikha nang arbitraryo sa loob ng isang takdang saklaw. Gayunpaman, ang mga random na numerong nilikha ng computer ay tinatawag na “pseudorandom na numero” dahil nilikha ang mga ito ayon sa isang hanay ng mga patakaran, kaya hindi talaga ito random. Dahil ang mga pseudorandom na numero ay nililikha ng isang algoritmo, ang paggamit ng parehong seed value (paunang halaga) ay magbubunga ng parehong sunod-sunod na numero.
3. Paano Lumikha ng Random na Numero sa C
Nagbibigay ang standard library ng C ng mga function para sa pagbuo ng random na numero. Dito, tututukan natin ang karaniwang ginagamit na rand() function, ang constant na RAND_MAX, at ang srand() function para sa pagtatakda ng seed value.
Mga Batayan ng Function na rand()
Ang rand() function ay ang pangunahing function sa C para sa pagbuo ng random na numero. Nagbabalik ito ng isang random na integer mula 0 hanggang RAND_MAX. Ang halaga ng RAND_MAX ay isang constant na tinukoy sa library at nakadepende sa sistema o kapaligiran, ngunit karaniwang ito ay 32767.
#include <stdio.h>
#include <stdlib.h>
int main() {
int random_number = rand();
printf("Random number: %dn", random_number);
return 0;
}
Sa code sa itaas, ang rand() function ay lumilikha ng isang random na integer mula 0 hanggang 32767 at ipinapakita ito.
Pagtatakda ng Seed Value gamit ang srand()
Ang rand() function ay lumilikha ng mga numero batay sa isang seed value, kaya sa default ay nagbubuo ito ng parehong sunod-sunod na numero sa bawat pagtakbo ng programa. Upang maiwasan ito, maaari kang magtakda ng seed value gamit ang srand() function, na nagbibigay-daan sa pagbuo ng iba’t ibang sunod-sunod. Isang karaniwang paraan ay itakda ang kasalukuyang oras bilang seed value.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned int) time(NULL)); // Initialize seed with current time
int random_number = rand();
printf("Random number: %dn", random_number);
return 0;
}
Sa halimbawang ito, kinukuha ng time(NULL) ang kasalukuyang oras at itinatakda ito bilang seed. Tinitiyak nito na bawat pagtakbo ng programa ay lilikha ng ibang sunod-sunod ng random na numero.
Pagbuo ng Random na Numero sa Isang Tiyak na Saklaw
Upang lumikha ng random na numero sa isang tiyak na saklaw (hal., mula 1 hanggang 10), gamitin ang rand() function tulad ng sumusunod:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned int) time(NULL));
int min = 1;
int max = 10;
int random_number = min + rand() % (max - min + 1);
printf("Random number between %d and %d: %dn", min, max, random_number);
return 0;
}
Ang code na ito ay lumilikha ng random na numero mula 1 hanggang 10. Ang expression na rand() % (max - min + 1) ay nagsisiguro na ang resulta ay nasa loob ng tinukoy na saklaw.

4. Praktikal na Mga Aplikasyon ng Random na Numero
Narito ang ilang halimbawa ng praktikal na paggamit ng random na numero.
Simulasyon ng Dado
Maaari kang mag-simulate ng pag-roll ng isang dice sa pamamagitan ng pagbuo ng random na numero mula 1 hanggang 6.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand((unsigned int) time(NULL));
int dice_roll = 1 + rand() % 6;
printf("Dice roll: %dn", dice_roll);
return 0;
}
Ang programang ito ay random na naglalabas ng numero mula 1 hanggang 6, na nag-i-simulate ng pag-roll ng dice.
Pag-shuffle ng Array
Maaari mong i-shuffle ang mga elemento ng isang array sa pamamagitan ng random na pagpapalit-palit ng mga ito.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void shuffle(int *array, int size) {
for (int i = 0; i < size; i++) {
int j = rand() % size;
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
int main() {
srand((unsigned int) time(NULL));
int array[] = {1, 2, 3, 4, 5, 6};
int size = sizeof(array) / sizeof(array[0]);
shuffle(array, size);
printf("Shuffled array: ");
for (int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
printf("n");
return 0;
}
Ang code na ito ay nag‑shuffle ng mga elemento ng isang array sa pamamagitan ng random na pagpapalit ng mga ito.
Paggamit ng Random na Numero sa Game Development
Sa game development, ginagamit ang random na numero para sa mga gawain tulad ng pagtukoy ng lokasyon ng pag‑spawn ng kalaban o pagbuo ng mga item. Sa pamamagitan ng paggamit ng random na numero, maaari kang magdagdag ng hindi inaasahang elemento sa mga laro, na lumilikha ng mas realistiko na karanasan para sa mga manlalaro.
5. Mga Punto na Dapat Tandaan sa Pagbuo ng Random na Numero
Mga Limitasyon ng Function na rand()
Bagaman sapat ang rand() para sa pangunahing pagbuo ng random na numero, ito ay lumilikha ng pseudorandom na numero na may limitadong siklo. Kapag gumagawa ng malaking dami ng random na numero, maaaring lumitaw ang mga periodic na pattern, na nagiging hindi angkop kung kinakailangan ang perpektong randomness.
Mga Isyu sa Multithreaded na Kapaligiran
Sa mga multithreaded na kapaligiran, ang paggamit ng rand() ay maaaring magdulot na maraming thread ang magbahagi ng parehong seed value, na nagreresulta sa paglikha ng magkaparehong random na numero. Upang maiwasan ito, dapat gumamit ang bawat thread ng natatanging seed value.
Paggamit ng Mataas na Kalidad na Random Number Generators
Nagbibigay ang C++ at iba pang mga wika ng mas mataas na kalidad na random number generators. Bagaman limitado ang mga opsyon sa C, inirerekomenda na gumamit ng mas advanced na mga algorithm tulad ng function na random() o ang Mersenne Twister (mt19937).
6. Konklusyon
Sa artikulong ito, ipinaliwanag namin kung paano lumikha ng random na numero sa C, nagbigay ng aktwal na mga halimbawa ng code, at nagpakita ng mga praktikal na aplikasyon. Ang function na rand() ay napaka‑kapaki‑pakinabang para sa mga pangunahing programa, ngunit kailangan ng pag‑iingat kapag kinakailangan ang tunay na randomness.



