C/C++ 隨機數(rand/srand)

rand() 隨機

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

int main() {
	// 隨機數 rand(每次啓動都是一樣的數)
	for (int i = 0; i < 10; i++)
	{
		printf("%d \n", rand());
	}
	return 0;
}

srand() 隨機 (設置一個種子)

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

int main() {
	// srand 隨機數,設置一個種子seed, 
	// 發現每次重啓還是一樣的值, 只有種子不一樣,隨機數纔不一樣
	srand(11);
	for (int i = 0; i < 10; i++)
	{
		printf("%d \n", rand());
	}
	
	// 獲取種子每次不一樣的值
	int seed = time(NULL);
	// 通常傳入當前的時間(保證不重複)
	srand(seed);
	for (int i = 0; i < 10; i++)
	{
		printf("%d \n", rand());
	}
	return 0;
}

srand() 指定範圍隨機

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

int main() {
	// rand 取範圍之間的數: 取模:如取200-290之間的值, 90是區間長度
	srand(time(NULL));
	for (int i = 0; i < 10; i++)
	{
		printf("%d \n", rand() % 90 + 200);
	}
	return 0;
}

隨機0.00 ~ 1.00之間的double

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

int main() {
	srand(time(NULL));
	// 要0.00 - 1.00 之間的小數
	int r = rand() % 100;
	double rp = r / 100.0;
	printf("%.2f \n", rp);
	// 或者
	double rp2 = (double)rand() / RAND_MAX;
	printf("%.2f \n", rp2);
	return 0;
}

srand() 隨機0-9之間的數

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

int main() {
	srand(time(NULL));
	// 隨機0-9之間
	int r = rand() % 10;
	printf("%d \n", r);
	return 0;
}

隨機整數範圍內的小數

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

int main() {
	srand(time(NULL));
	// 隨機100- 160之間的小數
	int r = rand() % 60 + 100; // 獲取一個整數
	double rp = r + (double)rand() / RAND_MAX; // 整數 + 隨機一個小數
	printf("%.2f \n", rp);
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章