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语言中的随机数函数解析...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 建行龙卡热购卡是什么意思
- 下一篇: 第一章c语言基础知识答案,第一章 C语