C C 隨機數的產生及計算 近似值的應用

2021-07-09 20:42:34 字數 2240 閱讀 3584

關於隨機數的定義:隨機數是專門的隨機試驗的結果

當然這裡的隨機數說的是偽隨機數,是計算機通過某種計算生成的乙個數。關於隨機數的意義及其價值,這裡就不多贅述,因為例子實在太多,筆者就用乙個簡單的例子來講——計算π的近似值。

我們可以想象出,產生乙個隨機數,就像當於在一片試驗田隨意地播撒種子,每個種子都會落到不同的地方,這樣就體現了隨機性。

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...