日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c分布 的程序设计语言,#2020学习打卡##C程序设计语言# C语言中的随机数函数解析...

發布時間:2025/4/5 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c分布 的程序设计语言,#2020学习打卡##C程序设计语言# C语言中的随机数函数解析... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在計算機中并沒有一個真正的隨機數發生器,但是可以做到使產生的數字重復率很低,這樣看起來好象是真正的隨機數,實現這一功能的程序叫偽隨機數發生器。

有關如何產生隨機數的理論有許多,如果要詳細地討論,需要厚厚的一本書的篇幅。不管用什么方法實現隨機數發生器,都必須給它提供一個名為“種子”的初始值。而且這個值最好是隨機的,或者至少這個值是偽隨機的。“種子”的值通常是用快速計數寄存器或移位寄存器來生成的。

在實際編程中,我們經常會用到隨機數這個概念,其實也是一個偽隨機數,實際上并不是一個真正的隨機數,但是也足夠我們使用了。在C語言中,編寫一些關于游戲之類的程序時就需要用到隨機數了。同時C語言也提供了一個標準庫里面一個函數來產生隨機數,而對于隨機數的產生是根據種子(根據一個數值按照某種公式計算的)來變化的,種子 與隨機數之間符合正態分布(高斯分布)。

生成隨機數

在C語言中,我們一般使用 頭文件中的 rand() 函數來生成隨機數,它的用法為:int rand (void);【void是指不需要傳遞參數】

rand() 會隨機生成一個位于 0 ~ RAND_MAX 之間的整數。而對RAND_MAX 是 頭文件中的一個宏,它用來指明 rand() 所能返回的隨機數的最大值。C語言標準并沒有規定 RAND_MAX 的具體數值,只是規定它的值至少為 32767。/**

* 第35堂課示例:隨機數

* 鄭凱

* 2020年5月25日

* */

#include

#include

int main()

{

int rands;

rands = rand();

printf("rand number is %d\n", rands);

printf("rand number2 is %d\n", rand());

return 0;

}但是這個隨機數一旦編譯之后就固定了,并不能滿足我們的實際需求,前面提到了只是一個偽隨機數,我們需要對產生隨機數的種子進行不斷的重播,從而達到我們實際需求的隨機數效果。我們可以通過 srand() 函數來重新“播種”,這樣種子就會發生改變。

srand() 的用法為:void srand (unsigned int seed);

它需要一個 unsigned int 類型的參數。在實際開發中,我們可以用時間作為參數,只要每次播種的時間不同,那么生成的種子就不同,最終的隨機數也就不同,通常我們采用 頭文件中的 time() 函數即可得到當前的時間【精準到秒】srand((unsigned)time(NULL));/**

* 第35堂課示例:隨機數

* 鄭凱

* 2020年5月25日

* */

#include

#include

#include

int main()

{

int rands;

srand((unsigned)time(NULL));

rands = rand();

printf("rand number is %d\n", rands);

printf("rand number2 is %d\n", rand());

return 0;

}小提示:根據種子與隨機數的符合高斯分布的關系可知,生成的隨機數是逐漸增大或者逐漸減小!

生成一定范圍隨機數

在實際編程開發中,實際需求往往是一定范圍內的隨機數,對于產生一定范圍的隨機數,就需要使用一定的技巧了,常用的方法是取模運算,再加上一個加法運算:int a = rand() % 10; //產生0~9的隨機數,注意10會被整除

如果要規定上下限:int a = rand() % 51 + 100; //產生100~150的隨機數

分析:取模即取余,rand()%51+13,看成兩部分:rand()%51是產生 0~50 的隨機數,后面+100保證 a 最小只能是 100,最大就是 50+100=150。/**

* 第35堂課示例:有區間的隨機數

* 例如:100~150之間的數字

* 鄭凱

* 2020年5月25日

* */

#include

#include

#include

int main()

{

int rands;

srand((unsigned)time(NULL));

rands = rand() % 51 + 100;

printf("rand number is %d\n", rands);

return 0;

}

根據種子與隨機數的符合高斯分布的關系可知,生成的隨機數是逐漸增大或者逐漸減小。

總結

以上是生活随笔為你收集整理的c分布 的程序设计语言,#2020学习打卡##C程序设计语言# C语言中的随机数函数解析...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。