1. 程式人生 > >產生任意隨機數發生器

產生任意隨機數發生器

    如何利用給定的隨機數發生器產生其他任意你想得到的隨機數發生器。假定給定的隨機數發生器是變數產生離散變數X服從某一分佈(例如均勻分佈,高斯分佈等等),任意你想得到的隨機數發生器滿足分佈Y,假設XY其概率密度分佈函式分佈為g(x),h(y)。假定用X隨機數發生器產生Y隨機數發生器,下面分為2步求解隨機數發生器。


下面給出兩個例子

假設我們有一個[0,1]上的均勻分佈隨機數發生器U(0,1), 基於它構造引數a=1.5的指數分佈的隨機數發生器。


下面給出圖例。

MATLAB中輸入產生一個[0,1]上的均勻分佈隨機數發生器U(0,1)並可視化表示其概率密度函式併產生指數分佈發生器,命令為如下:

x=0:0.001:10;
[n m]=size(x);
y=rand(1,m);
figure(1)
plot(x,y,'.')
title('均勻分佈隨機數發生器產生的散點圖');
figure(2)
hist(y,m/100);
title('均勻分佈概率分佈曲線');
z=-log(1-y);
figure(3)
plot(x,z,'.');
title('指數分佈隨機數發生器產生的散點圖');
figure(4)
hist(z,m/100)
title('指數分佈概率分佈曲線');

結果如下:


下面來介紹一個標準正態分佈的隨機數發生器N(0,1)得到對數正態分佈的隨機數發生器


程式一樣,只是轉化方程不一樣,現在給出實驗結果



相關推薦

產生任意隨機數發生器

    如何利用給定的隨機數發生器產生其他任意你想得到的隨機數發生器。假定給定的隨機數發生器是變數產生離散變數X服從某一分佈(例如均勻分佈,高斯分佈等等),任意你想得到的隨機數發生器滿足分佈Y,假設X和Y其概率密度分佈函式分佈為g(x),h(y)。假定用X隨機數發生器產生Y

C++ 實現http摘要認證之產生任意個數的隨機數程式碼

std::string randomString(const int count){     std::string hexStr = "123456789abcdef";     std::stri

推導:通過均勻分佈來產生任意分佈隨機數

最近想用C語言寫一個產生服從指數分佈的隨機數的程式。從網上找了找,發現可以通過均勻分佈來產生服從任意分佈的隨機數。然而,網上的推導不是很完善,我把自己的理解寫在這裡,有不嚴謹的地方請大家指正。 命題1:對一連續型隨機變數X,設它的分佈函式為F(x) = P { X ≤

java產生任意範圍內不重複的隨機數

n:需要的隨機數的數目 min:下限; max:上限 import java.util.* ; class Tester { public static void main(String args[]) { HashSet<Integer> set =

ORACLE 如何產生一個隨機數

參數 讓我 sysdate 能夠 cte 結果 進階 一個 子查詢 ORACLE 如何產生一個隨機數:DBMS_RANDOM 1、小數( 0 ~ 1) select dbms_random.value from dual ; 2、指定範圍內的小數 ( 0 ~ 100 ) s

如何用SQL為每一行均產生一個隨機數

sel style color and ceiling lin () span font select cast(ceiling(rand(checksum(newid()))*10) as int) as RndId from 表名 如何用SQL為每一行均產生一

一個隨機數發生器 用於在服務器和客戶機直接進行安全性驗證的類

提供服務 instance dig ext 隨機 個數 相關 algorithm sso 在服務器向客戶端提供服務時 有可能頁面遭到了修改 但是服務器無法進行驗證用戶提交的頁面是否 是自己服務器發送頁面 那麽就可以采用一個隨機函數發生器 發送一個字符給客戶機 在客戶機提交數

JavaScript獲取兩個數之間的任意隨機數

font image 如果 技術 獲取 分享圖片 通過 大數 .com #pay_pic { overflow: hidden; width: 200px; margin: 0 auto }

動手動腦(隨機數發生器

ava 發生器 println rate system 隨機數 class stat () import java.util.Scanner; public class Random { public static void main(String[] args) {

如何讓電腦產生一個隨機數

//電腦產生一個隨機值,然後把這個值賦值給Random;              Random RealNumber=new Random();//定義一個隨機變數; 

Random在for以及foreach迴圈中產生相同隨機數問題

在Random生成隨機數的時候,他是根據當前毫秒值來進行隨機生成,如果短時間內連續生成隨機數,就會導致生成的隨機數相同。下面我們介紹如何解決在 短時間內生成隨機數的時候,如何避免隨機數不一樣的問題。 利用Lock鎖住random引數 Random rand = new Random(); pub

並行隨機數發生器

1 TRNG TRNG 是一個非常靈活的隨機數發生器庫。它允許順序和用於並行應用程式。庫不依賴於任何特定的通訊庫。 它可以使用訊息傳遞介面 (MPI), OpenMP, 以及與 POSIX執行緒或任何其他通訊庫。本節給出了一個關於寫作的簡短教程 並行蒙特卡羅應用與 TRNG 和各種並行程式設

QuantLib 金融計算——數學工具之隨機數發生器

目錄 QuantLib 金融計算——數學工具之隨機數發生器 概述 偽隨機數 正態分佈(偽)隨機數 擬隨機數 HaltonRsg SobolRsg 兩類隨機數的收斂性比較 如果未做特別說明,文

產生正太隨機數的Box–Muller變換

為擴充訓練樣本、進行資料增廣,常用的方法之一是加(零均的)高斯噪聲 1.高斯噪聲的產生 計算機可以很方便地產生0-1均值分佈,Box-Muller變換可以將該均值分佈轉換成正太分佈: 兩組獨立的隨機數U

OpenSSL v0.9.8a隨機數發生器分析(合集)

OpenSSL隨機數發生器 摘要:本文件對OpenSSL使用的隨機數進行研究分析,主要涉及OpenSSL v0.9.8a的隨機數發生器以及其在Windows系統下的熵源採集情況。 關鍵詞:OpenSSL,密碼模組,隨機數發生器,密碼演算法,雜湊演算法,熵。

正態分佈的隨機數發生器 in C#

Box 和 Muller 在 1958 年給出了由均勻分佈的隨機變數生成正態分佈的隨機變數的演算法。設 U1, U2 是區間 (0, 1) 上均勻分佈的隨機變數,且相互獨立。令X1 = sqrt(-2*log(U1)) * cos(2*PI*U2);X2 = sqrt(-2*log(U1)) * sin(2*

自己寫的一個C++高位長真/偽隨機數發生器

  一直想要弄一個能夠生成真隨機數的類,但因未能找到合適的真隨機因子而未能完成。前些天偶然瞭解到IA32的CPU具有一個時鐘週期計數器,能夠提供自CPU復位後至今累計的時鐘週期數。忽然覺得這個正是最易得到而又最難預測的真隨機因子。   這裡我們不討論嚴格意義上的“真隨機”數

產生不同隨機數,輸入資料用折半查詢判斷資料是否存在。

隨機產生一組互不相同的兩位整數,然後通過鍵盤輸入一個整數,利用折半查詢法,查詢該整數是否存在。 以為很簡單的小程式,產生隨機數時遇到了大問題,多次相同的隨機數產生,另外還要進行排序,折半查詢的前提就

利用MATLAB產生各種隨機數

Matlab中隨機數生成器 betarnd 貝塔分佈的隨機數生成器 binornd 二項分佈的隨機數生成器 chi2rnd 卡方分佈的隨機數生成器 exprnd 指數分佈的隨機數生成器 注:exprnd(a,b,c)為產生期望為a的b×c的隨機數矩陣,

淺談隨機數發生器

//建立一個長度為624的陣列來儲存發生器的狀態 int[0..623] MT int index = 0 //用一個種子初始化發生器 function initialize_generator(int seed) { i := 0 MT[0] := seed fo