NS模拟器中随机数生成器MRG32k3a详解

需积分: 3 34 下载量 74 浏览量 更新于2024-08-10 收藏 4.4MB PDF 举报
"这篇博客文章主要讨论了NS2网络模拟中的随机数生成器,特别是5G_NR随机接入过程的学习总结。文章提到了两种随机数生成器:一种是基于L’Ecuyer的多重递归发生器MRG32k3a,另一种是Park和Miller的低标准乘法线性同余发生器(LCG16807)。MRG32k3a现已成为NS2.1b9及后续版本的默认随机数生成器,因为它能产生更多的独立随机数字流和子流,具有更长的周期,从而提供更好的随机性。" 文章指出,RNG类在NS2中包含了一个由L’Ecuyer提议的合成多重递归生成器MRG32k3a,这个生成器比以前的Park和Miller的LCG16807更为先进,因为它能产生2^32个不同的随机数字流,每个流又包含2^32个子流,每个子流具有2^19937-1的周期。这意味着整个生成器的周期长达2^(32*32+19937)-1,显著增加了随机数的独立性和多样性。 在NS2模拟器中,通常会为每个随机变量创建一个单独的RNG对象。默认的RNG(defaultRNG)在模拟器初始化时自动创建。若需要模拟多个场景或进行多次运行,可以通过选择不同的子流来确保随机数字的独立性。这样可以支持多达2^32个独立的模拟拷贝,每个拷贝都能产生2^19937个随机数,防止在重复运行时出现相同的序列。 博客还提到了一个OTcl的例子,说明如何在不同拷贝间切换子流以实现独立的随机数字流。此外,文章提醒读者,尽管这里只介绍了基本的函数,但更详细的文档可以在源代码文件tools/rng.h和tools/rng.cc中找到。对于为何LCG16807不是理想的随机数生成器,可以参考相关文献。 参与NS手册中文翻译的团队成员名单也在摘要中列出,他们各自负责翻译特定的章节,以保证翻译的专业性和准确性。翻译过程中尽力保持原文的风格,并提供了名词术语的中英文对照。团队欢迎读者提供反馈,以便在后续版本中改进和完善。 如果在使用NS2或随机数生成器的过程中遇到问题,可以在指定的论坛上寻求帮助,或者搜索已有的帖子来解决问题。