目前分類:亂數 (10)

瀏覽方式: 標題列表 簡短摘要

 

陸陸續續寫了 EA  一、二年,以前亂數引導文回頭看時才發現,怎麼有這麼多細節的錯誤、沒系統。

edisonx 發表在 痞客邦 PIXNET 留言(9) 人氣()

 

在學數值分析時,會講到如何以均勻分佈,轉換到各種分佈裡,常見的大概會有波松分佈、指數分佈、常態分佈。較有名的方式 Miller-Box Transform 是專用在轉常態分佈 ( 因常態分佈是算常出現的機率模型 )。

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()

亂數有些議題特別拉出來再次討論,不熟的話 可看這篇

1.  [low, up]

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()

1. 基本觀念

線性同餘法基本上只有一個公式,X(n+1) = ( a * X(n) + b ) mod c

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()

以下說明之方法,與平方取中法均有相似之處,其重大缺點都一樣,最後容易面臨退化之窘境。

Midproduct Method (中間乘積法)

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()

K algorithm ( "Super-random" number generator)

這是由 Kunth 於 The Art Of Programming 裡提出說明,當時 Kunth 試著以此演算法建立較好之 PRNG,也強調讀者不必特別研究它,故這部份沒太大興趣者可跳過,流程大致如下,其中 ** 代表次方,如 3**5 代表 3 的 5 次方。(以下特別注意 K1, K2)

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()

Midsquare method(中間平方法 / 平方取中法)

這部份主要參考 The Art Of Computer Programming.

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()

前言

1. 這系列文章主要在探討亂數問題,我認為任何 coder 即使不知道如何寫出一份亂數產生器,但應必須知道亂數之原理及其使用之注意事項。

, ,

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()

x

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 100

int main() 
{
    unsigned i;
    int head[N]={0}, test[N]={0};
    srand(0);
    for(i=0; i!=N; ++i) head[i] = rand();
    i=0;
    while(memcmp(head, test, N*sizeof(int))){
       memcpy(test, test+1, (N-1)*sizeof(int));
       test[N-1]=rand();
       ++i;
    }
    printf("period=%u\n", i);
    printf("int_max=%d\n", INT_MAX);
    return 0;
}

 

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()

這篇筆者認為寫得沒系統,對初學者而言不夠清楚 ,有些地方也寫錯,有興趣可參考另一篇 

[亂數] <細說> C/C++ 亂數基本使用與常見問題

 ,本文予以關閉。

edisonx 發表在 痞客邦 PIXNET 留言(0) 人氣()

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼