iT邦幫忙

2021 iThome 鐵人賽

DAY 26
0
Software Development

0基礎也看得懂的程式設計-30天學會C語言系列 第 26

30天學會C語言: Day 25-抽獎的原理

亂數

用於產生隨機的數字,在 C 語言中亂數相關的函式定義在 stdlib.h

rand()

隨機回傳一個整數

#include<stdio.h>
#include<stdlib.h>

int main(){
	printf("%d", rand());

	return 0;
}

重複執行幾次會發現結果都相同,因為亂數實際上是透過一個複雜的演算法,將稱為 種子 的數字計算成其他數字,因為沒有另外設定,所以每次執行時種子都是0,所以亂數的結果都會相同

srand()

用於設定種子,通常使用 time.h 中的 time() 為引數

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
	srand(time(NULL));
	printf("%d", rand());

	return 0;
}

如果取多次亂數,只需要在第一次取亂數前設定種子,每次執行的結果就會不同


回傳數值的上限因系統而異而且極大,所以通常會利用除模限制數值的範圍

因為一個數除模 n 只會有 n 種結果(0, 1, ..., n-1),所以下面例子讓亂數的結果限制在0~9

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
	srand(time(NULL));
	printf("%d", rand()%10);

	return 0;
}

將亂數結果限制在 1~10

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main(){
	srand(time(NULL));
	printf("%d", rand()%10+1);

	return 0;
}

上一篇
30天學會C語言: Day 24-排序
下一篇
30天學會C語言: Day 26-變數住哪裡
系列文
0基礎也看得懂的程式設計-30天學會C語言30

尚未有邦友留言

立即登入留言