Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

rand() และ srand() ใน C/C++


ในบทความนี้ เราจะอภิปรายการทำงาน syntax และตัวอย่างของ rand() และ srand() function ใน C++ STL

rand() คืออะไร?

rand() เป็น built-in function ใน C++ STL นิยามใน <cstdlib> header file ใช้สร้างชุดของ random numbers ใช้เมื่อต้องการสร้าง random number ในโค้ด

เหมือนเราทำเกมลูกเต๋าใน C++ ต้องการ random number 1-6 สามารถใช้ rand() ได้

Random number ถูกสร้างโดยอัลกอริทึมที่ให้ชุดตัวเลขที่ไม่เกี่ยวข้องกันทุกครั้งที่เรียกฟังก์ชันนี้

เหมือนต้องการ random number 1-6 ใช้แบบนี้ −

Num = rand() % 6 + 1;

Syntax

int rand();

Parameters

ฟังก์ชันไม่รับ parameter(s)

Return value

คืนค่า integer ระหว่าง 0 ถึง RAND_MAX

Input 

rand() % 100 +1;

Output 

57

ตัวอย่าง

rand()

#include <stdio.h>
#include <stdlib.h&g;
int main(void){
    printf("Randomly generated numbers are: ");
    for(int i = 0; i<5; i++)
        printf(" %d ", rand());
    return 0;
}

ผลลัพธ์

ถ้ารันโค้ดนี้ครั้งแรก (FIRST time) ผลลัพธ์จะเป็น −

Randomly generated numbers are: 1804289383 846930886 1681692777 1714636915 1957747793

ถ้ารันครั้งที่ N (Nth time) ผลลัพธ์จะเป็น −

Randomly generated numbers are: 1804289383 846930886 1681692777 1714636915 1957747793

srand() คืออะไร?

srand() เป็น built-in function ใน C++ STL นิยามใน <cstdlib> header file ใช้ initialize random number generators ฟังก์ชันนี้ให้จุดเริ่มต้นสำหรับการผลิต pseudo-random integer series อาร์กิวเมนต์ถูกส่งเป็น seed สำหรับสร้าง pseudo-random number ทุกครั้งที่ใช้ seed value ต่างกันใน srand pseudo number generator คาดว่าจะสร้างชุดผลลัพธ์ที่ต่างกัน เหมือน rand()

Syntax

int srand(unsigned int seed);

Parameters

ฟังก์ชันรับ parameter(s) ดังนี้ −

  • seed − integer ที่ใช้เป็น seed โดย pseudo-random number generator

Return value

ฟังก์ชันคืนค่า pseudo generated random number

Input 

srand(time(0)); rand();

Output 

1804289383

ตัวอย่าง

srand()

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main(void){
    srand(time(0));
    printf("Randomly generated numbers are: ");
    for(int i = 0; i<5; i++)
        printf(" %d ", rand());
    return 0;
}

ผลลัพธ์

ถ้ารันโค้ดนี้ครั้งแรก (FIRST time) ผลลัพธ์จะเป็น −

Randomly generated numbers are: 382366186 1045528146 1291469435 515349891 931606430

ถ้ารันครั้งที่สอง (SECOND time) ผลลัพธ์จะเป็น −

Randomly generated numbers are: 1410939666 214525217 875042802 1560673843 782892338