本篇 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
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
這次我們以時間做為亂數種子,再試看看會變成怎麼樣?1
2
3
4
5
6
7
8
9
10
11
12// g++ cpp-rand-2.cpp -o a.out
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 亂數字母寫法如下,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15// g++ cpp-rand-3.cpp -o a.out
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 用法與範例