[C.C++] c语言 randomize函数,C語言隨機函數 rand()\srand()\randomize() 使用總結

373 0
Honkers 2025-6-18 08:37:31 来自手机 | 显示全部楼层 |阅读模式

說明:

1、這兩個函數都在頭文件是stdlib.h中。

2、rand()函數和srand()函數必須配套使用。

(1) rand()函數:

原型: int rand(void)

功能: 產生從0到RAND_MAX(0x7fff)之間的隨機數。

頭文件: stdlib.h

例:

#include

#include

int main()

{

int k;

k = rand();

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

return 0;

}

編譯運行,發現的確產生隨機數了,但是,每次運行程序產生的隨機數都是一樣的,為什么呢?因為隨機數取在

C語言中采用的是固定序列,所以每次執行所取的是同一個數。那么如何寫一個程序,讓它每次運行時產生的隨機數

都不一樣呢?

(2)srand()函數:

原型: void srand(unsigned seed)

功能: 產生隨機數的起始發生數據,和rand函數配合使用

頭文件: stdlib.h   time.h

例:

#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;

}

這時運行程序,會發現每次產生的隨機數都不一樣。這是因為這里采用了時間作為種子,而時間在每時每刻都

不相同,所以就產生了"隨機"的隨機數了。所以,要想產生不同的隨機數,在使用rand之前需要先調用srand。

這樣做相當麻煩,有沒一個更簡單的函數呢?

(3)randomize()函數:

原型: int randomize(void)

功能: 通過time函數來得到一個隨機數

頭文件: stdlib.h   time.h

該函數就相當於srand((unsign)(time(NULL)) 不過應注意的是randomize()的功能要通過time來實現所以在

調用它時頭文件要包含time.h。

(4)產生一個X到Y的隨機數:

由於rand產生的隨機數從0到rand_max,而rand_max是一個很大的數,那么如何產生從X~Y的數呢?

只要這樣寫:

k=rand()%(Y-X+1)+X;

這樣可以產生任何范圍內的隨機數。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Honkers

荣誉红客

关注
  • 4014
    主题
  • 36
    粉丝
  • 0
    关注
这家伙很懒,什么都没留下!

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行