C語言中隨機函式應用

2021-08-26 06:50:57 字數 1101 閱讀 5575

可能大家都知道c語言中的隨機函式random,可是random函式並不是ansi c標準,所以說,random函式不能在gcc,vc等編譯器下編譯通過。那麼怎麼實現c語言中的隨機函式呢?

除了random函式,還有乙個rand函式,也是乙個隨機函式,可以產生從0到rand_max的隨機數。

#include

#include

int main()

int k;

k=rand();

printf("%d\n", k);

return 0;

大家可以把以上的**編譯執行一下,發現他的確產生隨機數了,但是你會發現,每次執行程式產生的隨機數都是一樣的,為什麼呢?因為隨機數取在c語言中採用的是固定序列,所以每次執行所取的是同乙個數。

那麼如何寫乙個程式,讓它每次執行時產生的隨機數都不一樣呢? 請看下面的例子:

#include

#include

#include

int main(void)

int i;

time_t t;

srand((unsigned) time(&t));

printf("ten random numbers from 0 to 99\n\n");

for (i=0; i<10; i++)

printf("%d\n", rand()%100);

return 0;

這時執行程式,會發現每次產生的隨機數都不一樣。

那麼為什麼第乙個程式一樣而第二個程式不一樣呢?

第二個程式用到了乙個新的函式srand,這個函式是給隨機數產生乙個隨機種子(seed),函式原型是srand( (unsigned) time(null));

time的值每時每刻都不同。所以種子不同,所以,產生的隨機數也不同。

所以說,要想產生不同的隨機數,在使用rand之前需要先呼叫srand

由於rand產生的隨機數從0到rand_max,而rand_max是乙個很大的數,那麼如何產生從x~y的數呢?

從x到y,有y-x+1個數,所以要產生從x到y的數,只需要這樣寫:

k=rand()%(y-x+1)+x;

這樣,就可以產生你想要的任何範圍內的隨機數了。

C語言中隨機函式應用

time t t srand unsigned time t printf d n rand 100 第二個程式用到了乙個新的函式srand,這個函式是給隨機數產生乙個隨機種子 seed 函式原型是srand unsigned time null time的值每時每刻都不同。所以種子不同,所以,產生...

C語言中qsort函式的應用

qsort函式包含在的標頭檔案裡,本文中排序都是採用的從小到大排序 int num 100 int cmp const void a const void b qsort num,100,sizeof num 0 cmp char word 100 int cmp const void a cons...

C語言中sort 排序函式應用

sort first pointer,first pointer n,cmp 該函式可給陣列,或者鍊錶list 向量排序。實現原理 sort並不是簡單的快速排序,它對普通的快速排序進行了優化,此外,它還結合了插入排序和推排序。系統會根據你的資料形式和資料量自動選擇合適的排序方法,這並不是說它每次排序...