C/C++ rand 產生亂數用法與範例

本篇 ShengYu 介紹 C/C++ rand 產生亂數用法與範例。

C/C++ 要使用 rand 的話需要引入的標頭檔 <stdlib.h>,如果要使用 C++ 的標頭檔則是引入 <cstdlib>
rand 函式原型為

1
int rand (void);

rand() 所產生的亂數是一個整數,其值介於 0 到 RAND_MAX 之間,RAND_MAX 的值會是 2147483647,跟 INT_MAX 一樣。

C/C++ rand 用法

rand() 產生 0-9 亂數寫法如下,

1
2
3
4
5
6
7
8
9
10
// g++ cpp-rand.cpp -o a.out
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
int n = rand() % 10; // 產生 0-9 亂數
printf("n = %d\n", n);
return 0;
}

結果如下,會發現執行3次的結果亂數都一樣,

1
2
3
4
5
6
$ ./a.out 
n = 3
$ ./a.out
n = 3
$ ./a.out
n = 3

這次我們以時間做為亂數種子,再試看看會變成怎麼樣?

cpp-rand-2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
// g++ cpp-rand-2.cpp -o a.out
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
srand(time(NULL)); // 設定時間為亂數種子

int n = rand() % 10; // 產生 0-9 亂數
printf("n = %d\n", n);
return 0;
}

結果如下,會發現執行3次的結果亂數都不一樣了!

1
2
3
4
5
6
$ ./a.out 
n = 9
$ ./a.out
n = 7
$ ./a.out
n = 4

rand() 產生 1-10 亂數寫法如下,

1
int n = rand() % 10 + 1;

rand() 產生 a-z 亂數字母寫法如下,

cpp-rand-3.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// g++ cpp-rand-3.cpp -o a.out
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
const char letters[27] = "abcdefghijklmnopqrstuvwxyz";

srand(time(NULL)); // 設定亂數種子

int size = (int)sizeof(letters);
char c = letters[rand() % size]; // 產生 a-z 亂數字母
printf("c = %c\n", c);
return 0;
}

結果如下,

1
2
3
4
5
6
$ ./a.out 
c = s
$ ./a.out
c = i
$ ./a.out
c = v

以上就是 C/C++ rand 產生亂數用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 新手入門教學懶人包
C/C++ fopen 用法與範例
C/C++ fread 用法與範例
C/C++ fgets 用法與範例
C/C++ fputs 用法與範例
C/C++ fclose 用法與範例