標籤:time random 隨機函數
說明
//在這裡srand的作用很重要,srand()的作用是初始化隨機數種子,種子的偽隨機數計算的依據,
//種子相同,計算得到的隨機數也是相同的,通常函數沒有用到srand()而是用rand(),則是相當於調用了srand(1),
//這也解決了我上學期做最後那個記憶遊戲時,每次重新運行程式時,產生的隨機數都是相同的問題
//time(NULL)返回的值是自1970.1.1零點以來經過的秒數,所以每時每刻都是不同的
代碼
#include<stdio.h>#include<time.h> //time()#include<stdlib.h> //srand()+rand()int main(){ srand(time(NULL)); //產生[a,b] int m = rand() % a + b; printf("%d\n", m);}//主要是產生隨機數,但是rand()函數產生隨機數區間為[0,RAND_MAX]//RAND_MAX至少為32767(2e15-1),並且在不同條件下數值可能不同//這裡作者用了放大的方式將區間放大(代碼來自劉汝佳)#include<stdio.h>#include<time.h> //time()#include<stdlib.h> //srand()+rand()int n = 100, m = 100000;//這個函數是取得[0,1]區間內的實數,之後在下一個函數中擴大(n-1)倍在取整double random(){ return (double)rand() / RAND_MAX;}int random(int m){ return (int)(random()*(m - 1) + 0.5);}int main(){ srand(time(NULL)); printf("%d %d\n", n, m); for (int i = 0; i < m; i++) { if (rand() % 2 == 0) { printf("A"); } else { printf("B"); } int X, Y; for (;;) { X = random(n) + 1; Y = random(n) + 1; if (X != Y) { break; } } printf("%d %d\n", X, Y); } return 0;}
C++產生隨機數