概率演算法 偽隨機數生成 拋硬幣實驗

2021-04-01 22:44:34 字數 1504 閱讀 5469

//概率演算法_偽隨機數生成_拋硬幣實驗

////實驗平台: vc++.net 2003

//建乙個 win32控制台程式

//// 偽隨機數生成的原理

// 隨機數在概率演算法中扮演著十分重要的角色。

// 在現實計算機上無法產生真正的隨機數,

// 因此在概率演算法中使用的隨機數都是一定程度上隨機的,

// 即偽隨機數。

// 產生偽隨機數最常用的方法是線性同餘法。

// 由線性同餘法產生的隨機數序列 a1 , a2 , ... , an ...

// 滿足

// a0 = d;

// an = ( b * a(n-1) + c ) mod m , n = 1 , 2 , ... ;

// b >= 0 , c >= 0 , d >= 0

// d稱為隨機序列的種子

// 如何選取常數 b , c , m 直接關係到所產生的隨機序列的隨機性能。

// 一般得應取 ***( m , b ) = 1,因此可取 b 為一素數

//源程式:

// tosscoins.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

// 概率演算法

// 偽隨機數的生成

// 模擬拋硬幣試驗

#include "time.h"

#include "conio.h"

// begin of class randomnumber

const unsigned long maxshort = 0x10000;

const unsigned long multiplier = 0x472e396d;

const unsigned long adder = 0x3039;

class randomnumber

;unsigned long randomnumber::randseed = time(null);

randomnumber::randomnumber( unsigned long s = 0 )

unsigned short randomnumber::random( unsigned long n )

double randomnumber::frandom()

// end of class randomnumber

// begin of tosscoins

int tosscoins( int numbercoins )

return tosses;

}// end of tosscoins

int _tmain(int argc, _tchar* argv)

;for( int i = 0 ; i < testtime ; i++ )

printf( "正面數/t實驗數/t圖/n" );

for( int i = 0 ; i <= ncoins ; i++ )

getch();

return 0;

}

隨機數模擬拋硬幣實驗

在現實計算機上無法產生真正的隨機數,因此在隨機化演算法中使用的隨機數都是一定程度上隨機的,即偽隨機數。線性同餘法是產生偽隨機數最常用的方法 這裡不介紹 下面用計算機產生大的偽隨機數來模擬拋硬幣試驗。假設拋10次硬幣,每次拋硬幣得到正面和反面是隨機的。拋10次硬幣構成乙個事件。呼叫random 2 返...

生成偽隨機數

真正的隨機數只能自然生成,所以我們人工得到的隨機數被稱為偽隨機數。使用中的rand 函式可以生成0 rand max之間的隨機整數.rand 函式使用乙個起始的種子值生成一系列數字,對於乙個特定的種子產生的序列數永遠是相同的。如果使用rand 函式只使用乙個種子值,即預設的種子值,就會使得序列數是有...

隨機數生成 偽隨機數和真隨機數

c語言隨機數的生成,很隨機,又不隨機,比如像下面的程式 c語言生成隨機數的函式在stdlib.h庫中 include includeint main return 0 上面的 經過執行生成了 41 18467 6334 26500但是無論執行多好遍結果都是一樣的,隨機數並不隨機。這是因為rand 函...