SAD部屋 - Ticket-14 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

! Parabola

:Priority:Normal
:Reporter:Masafumi Tawada
:Status:Closed
:Assigned to:
:Version:1852
:Milestone:1860
:Created:2008-04-22

!! Description

ParabolaRandomMT[]を使っても一様乱数にしかならない。

test script:
FFS;
Library@Require["RandomMT"];

w=KBMainFrame["ParabolaRandom",f1];
c1=Canvas[f1,Width->600,Height->400];
np=1000;
in=Table[ParabolaRandom[],{np}];
inMT=Table[ParabolaRandomMT[],{np}];

g1=HistoPlot[in, Bins->20,BinRange->{-2,2},DisplayFunction->Identity];
g2=HistoPlot[inMT, Bins->20,BinRange->{-2,2},DisplayFunction->Identity];

Canvas\$Widget=c1;
Show[Graphics[{
    Rectangle[{0.,0.},{0.3,0.3},g1],
    Rectangle[{0.,0.35},{0.3,0.65},g2]
}]];
TkWait[];
stop;


そのログ:
  *** Welcome to SAD Revision 1852 built at 2008-04-20 16:49:48 +0900 ***
   cpu time= 1.3550E-02(sec) dt=     13.550(msec) free area::    1802
  OFF LOG ECHO;READ 77 ;          23
   cpu time= 1.3813E-02(sec) dt=     13.813(msec) free area::    1802
   cpu time= 1.3895E-02(sec) dt=     13.895(msec) free area::    1801
  *** SADScript Initialization: /users/tawada/tmp/oldsad-amorita-snapshot-1852/Packages/init.n ***
  RFSW RADCOD RAD   FLUC INTRA  POL   COD  DAPER EMIOU CMPLO FOURI SMEAR
    F     F     F     T     F     F     T     F     F     F     F     T
  Design orbit length =  1.00000000000000000    
  
  Library@Require["RandomMT"];
feature[Random/SAD] version is redefined from 1000 to 1001.
random_register(): upgrade plugin[SAD] from version=1000 to 1001
Library[Random/SAD] from /mnt/nadata1a/users/tawada/tmp/oldsad-amorita-snapshot-1852/arch/Extension/Random/i386-Darwin9/SAD.so is loaded.
Library[Random/MT19937] from /mnt/nadata1a/users/tawada/tmp/oldsad-amorita-snapshot-1852/arch/Extension/Random/i386-Darwin9/MT19937.so is loaded.
Library[Random/SFMT19937] from  /mnt/nadata1a/users/tawada/tmp/oldsad-amorita-snapshot-1852/arch/Extension/Random/i386-Darwin9/SFMT19937.so is loaded.
Library[Random/SFMT] from /mnt/nadata1a/users/tawada/tmp/oldsad-amorita-snapshot-1852/arch/Extension/Random/SFMT.n is loaded.
Library[RandomMT] from /mnt/nadata1a/users/tawada/tmp/oldsad-amorita-snapshot-1852/arch/Extension/RandomMT.n is loaded.

w=KBMainFrame["ParabolaRandom",f1];
c1=Canvas[f1,Width->600,Height->400];

np=1000;

in=Table[ParabolaRandom[],{np}];
inMT=Table[ParabolaRandomMT[],{np}];

g1=HistoPlot[in, Bins->20,BinRange->{-2,2},DisplayFunction->Identity];
g2=HistoPlot[inMT, Bins->20,BinRange->{-2,2},DisplayFunction->Identity];

Canvas\$Widget=c1;
Show[Graphics[{
     Rectangle[{0.,0.},{0.3,0.3},g1],
     Rectangle[{0.,0.35},{0.3,0.65},g2]
}]];

TkWait[];

結果の画像を添付しました。==は/ldata/KEKB/KCG/ScrShot/2008/2008_04/22/2008_04_22_13_27_18.gif==
上の図がParabolaRandomMTで下の図がParabolaRandomの図です。


BoundQ[RandomMT]=1
となっていることは確認しました。

MacOSX10.5.2, amsadd上にてoldsad-amorita-snapshot-1852+RandomMTRev18をコンパイルしたものを使っています。

!! Attachement files
{{attach_map('Ticket-14')}}
{{attach_form('','')}}//{{attach_form('','')}}

!! Changelog
!!!Akio Morita (2008-04-22 (火) 16:41:56)
後方互換ラッパーのバグです。
修正済みの extension moduleを Rev.19でリリースします。

'''MT'''サフィックスが付く関数群は、旧版(Rev.5)上で書かれた
コードとの後方互換性を保つために定義されているので、
新規での使用はお勧めできません。
また、乱数系列の切替えを行うのは'''SeedRandom'''関数であり、
'''MT'''サフィックスの有無で乱数系列が切り替わるわけでは有りません。
!!!Akio Morita (2008-04-22 (火) 16:57:59)
CVS MAIN trunkへのバックポートを実施
||extensions/RandomMT/RandomMT.n||1.2||
||extensions/RandomMT/RandomSFMT.n||1.2||
!!!Akio Morita (2008-04-22 (火) 17:09:36)
RandomMT-Rev.19のリリース完了をもってTicketをCloseします。
!!!Masafumi Tawada (2008-04-22 (火) 17:16:42)
修正お手数をお掛けしました。
ということは、GaussRandom[]とGaussRandomMT[]とは同じもののはずということでしょうか?
それともGaussRandom[]とGaussRandomMT[]はプロットすると違い
が出ますが、これだけはGCUTを入れるために残してあるのでしょうか?
!!!Akio Morita (2008-04-22 (火) 18:13:43)
GaussRandom[]と [[GaussRandomMT|GaussRandom]][]は同じ関数ですから、実行結果は同じはずです。

同じ疑似乱数系列かつ同じ内部状態からを実行した際に、
GaussRandom[]と [[GaussRandomMT|GaussRandom]][]の結果が
異なるとすれば、インタープリタに致命的なバグが入っていると思うのですが?

注意すべきは、Random[]関数は内部状態を持っているので
直前の実行コンテキストの影響下にあります。したがって、結果の
同一性&再現性を議論をする際には内部状態の同一性も
含めて議論する必要があります。また、頻度分布の議論の場合は、
統計的な揺らぎを考慮する必要があります。
!!!Masafumi Tawada (2008-04-22 (火) 18:42:20)
了解しました。

GaussRandomMTでもGCUTがあると便利だと思います。
!!!Akio Morita (2008-04-22 (火) 19:20:04)
[[GaussRandomMT|GaussRandom]][]はGaussRandom[]の
別名だから、実体は''src/tfRandom_.c''にあって'''GCUT'''は
実装済みのはずだが?
!!!Masafumi Tawada (2008-04-22 (火) 22:23:35)
了解。前にはGaussRandomMTにはGCUTが入っていなかったので、
Wikiにもそう書いてありました。
実装されているのならWikiの方を書き換えます。
PRNGの簡単な説明が欲しいところです。
!!!Akio Morita (2008-04-23 (水) 01:15:46)
RandomMT extension同梱の README.ja に
2007/11/02リリースの Rev.7で'''GCUT'''を
サポートしたと書いてあるが?

簡単な説明というのが、何かは分りませんが
*SADScript側の[[APIマニュアル|http://jyurai.ddo.jp/~amorita/SAD/?Core/Random]]
*Pluginモジュール自身の解説は、同梱のREADME.ja参照
あと、Packages/HelpMessages.nも一応更新しているが、
なにか不足してる?

内部のPRNG API(C interface)とか Plugin Module界面は
まだ文書化していないけど、Pluginの実装にはサンプルがあるので
作る気になって読めばだいたい分るはずだから、それほど障害には
成らないと思うけど?
!!!Akio Morita (2008-04-23 (水) 19:01:33)
内容が、このTicketの趣旨と離れてしまっているのでCloseします。

GaussRandom[]と[[GaussRandomMT|GaussRandom]][]の
結果が一致しない、マニュアルに不備がある等の問題は、
別途新しいTicketを割り当ててください。

{{its_edit_ticket_form}}//{{its_edit_ticket_form}}