關於隨機數的定義:隨機數是專門的隨機試驗的結果。
當然這裡的隨機數說的是偽隨機數,是計算機通過某種計算生成的乙個數。關於隨機數的意義及其價值,這裡就不多贅述,因為例子實在太多,筆者就用乙個簡單的例子來講——計算π的近似值。
我們可以想象出,產生乙個隨機數,就像當於在一片試驗田隨意地播撒種子,每個種子都會落到不同的地方,這樣就體現了隨機性。
c/c++是這樣產生隨機數的:
首先,我們要引用包含srand()(隨機數發生器初始化函式)、rand()(隨機數產生函式)函式的標頭檔案,這兩個函式都包含於常用標準函式庫,在c++中引用標頭檔案cstdlib(c中為stdlib.h)。
要想產生的隨機數不同,可以使用系統時間來初始化隨機數的發生。
這樣就需要引用包含時間函式的標頭檔案ctime(c中為time.h)。
**可以寫成:
#include
#include//包含時間的標頭檔案
#include//包含隨機數函式的標頭檔案
若想產生隨機小數
可以修改變數:
float r;
r=rand()%(b-a+1)+a+(float)rand()%1000/1000.0
//隨機產生位數不定的小數
這裡有乙個值得注意的地方,隨機數每次只能產生乙個。如果需要用到不同的隨機數,那麼產生的隨機數的函式要放在迴圈裡面,這樣每次執行程式的時候,隨機數才會隨著迴圈的改變而隨機改變。
隨機數的應用很廣,估算π的近似值也是很重要的應用。
這裡使用的是最常用的撒豆子演算法:
方便計算,這裡用單位圓,取r=1,
由圓的面積除以正方形的面積 πr²/4r² = π/4————————–(1)
往正方形內撒豆子,所以把正方形面積看成beans,撒進1/4圓的豆子看成k,即1/4圓的面積。
這樣由(1)就得到一條等式 4k/b=π
用raptor進行視覺化演算法設計:
這裡先是用了99、999、9999三個數字的豆子進行計算,結果也是差別很大,得不到理想的圓周率。
如果按照這樣的演算法進行更大數字的計算,耗時會更久。
下面是c++的描述:
#include
#include
#include
#include
#include//包含開平方sqrt()函式的標頭檔案
using
namespace
std;
int main()
else --n;
}} while (n > 0);
pi = 4.0 * k / beans;
cout
<< "近似值 π≈"
<< setiosflags(ios::fixed) << setprecision(10) << pi << endl;
system("pause");
return
0;}
執行結果比較靠近實際情況:
小結:學習隨機數是乙個比較有樂趣的過程,尤其是自己摸索的過程,是充滿樂趣的。
隨機數需要注意應用,比如用系統時間進行隨機數的生成、產生某一範圍的隨機數以及產生小數隨機數等等。收穫也是很大的。
C C 產生隨機數的函式
c語言中有可以產生隨機數的函式,需要新增 stdlib.h 標頭檔案和 time.h 標頭檔案。srand unsigned time null 初始化隨機種子 for int i 0 i 10 i printf d rand 其中,rand 函式只能產生 0,rand max 範圍內的整數 ran...
隨機數的產生
方法 標頭檔案中的rand 函式可以產生乙個閉區間 0,rand max 的均勻隨機數,其中rand max在中被定義為常數32767,嚴格地說,這裡的隨機數是 偽隨機數 因為它是由數學公式計算出來的,不過在演算法領域,多數情況下可以吧她當作真正地隨機數。示例 產生n個區間 1,m 上的隨機數。in...
隨機數的產生
1 隨機數的使用 1 arc4random 比較精確不需要生成隨即種子 使用方法 通過arc4random 獲取0到x 1之間的整數的 如下 int value arc4random x 獲取1到x之間的整數的 如下 int value arc4random x 1 2 ccrandom 0 1 c...