惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
Jina AI
Jina AI
博客园_首页
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Forbes - Security
Forbes - Security
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
N
News | PayPal Newsroom
S
Security Archives - TechRepublic
量子位
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Cisco Blogs
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Scott Helme
Scott Helme
S
Securelist
Security Latest
Security Latest
爱范儿
爱范儿
TaoSecurity Blog
TaoSecurity Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Know Your Adversary
Know Your Adversary
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
月光博客
月光博客
T
Tailwind CSS Blog
Cloudbric
Cloudbric
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
D
DataBreaches.Net
博客园 - 【当耐特】
有赞技术团队
有赞技术团队

博客园 - asashina

绿色和平,你错了! 日本科学家一级棒! 新游戏就在我的后院里~~ 攒钱12000元,计划一下去莫斯科的旅游~~~ 应用层安全传输协议 hoho 俺也献了回爱心~~ Bloom Filter Report 好久没更新 大家新年好! 祝贺Phyllis Turner女士成为世界上最年长的硕士! 美国国旗里的“火箭” "红旗颂"的感情多么真挚,突然很理解老一代们:-) 嗯,祝贺自己的论文终于发表了。丑小鸭终于找到了鸭群~~~ XMLLite是什么? 最近把新同事培训的事情接了过来... 达尔文的眼睛---之软件工程 PlaceHolder 在听伏尔加纤夫曲 超酷 Susan Milan的音乐 剑道训练很有趣的一种手段
K.I.S.S.Random Genrator/ “保持简单”随机数发生器
asashina · 2008-02-11 · via 博客园 - asashina

(假)随机数发生器是Monte Carlo算法的基础,自然大家格外关注。
近几年,日本某君发明的Mersenne Twister[Makoto Matsumoto]可谓其中翘楚。
不过,它并非尽善尽美。一则它不适合用于数据加密,二则不能通过一些统计检验。
三嘛就是源程序比较长,不是一眼就能看明白的。

反过来,上世纪90年代后期就被Marsaglia[Marsaglia]发明出来的Keep-It-Simple-And-Stupid
算法却挺有趣而简短,而且能打通DIEHARD的各种检验[DIEHARD]。

下面是源代码:
unsigned int x = 123456789,
         y = 362436000,
             z = 521288629,
             c = 7654321; /* Seed variables */
 
unsigned int KISS()

    unsigned long long t, A = 698769069ULL; 

    x = 69069*x+12345; 
   
    y ^= (y<<13); y ^= (y>>17); y ^= (y<<5); 
   
    t = (A*z + c);
    c = (t >> 32);
    z = t;
     
    return x+y+z; 
}

居然就只是把“线性同余”,“移位轮转”和“带记忆乘法”这3种基本的随机数发生法一起用,
便获得很好的效果。的确够巧的,从这一点上说,比Mersenne Twister要有趣多了。
而且通过它,我们一次就学会3种随机数发生法。抽出其中任何1种,都可以单独使用,仿佛一把瑞士军刀。

[Makoto Matsumoto]Mersenne Twister Home Page
http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html
[Marsaglia]George_Marsaglia Wiki Page
en.wikipedia.org/wiki/George_Marsaglia
[DIEHARD]The Marsaglia Random Number CDROM
http://stat.fsu.edu/pub/diehard/