首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Matlab编写lcg程序

用Matlab编写lcg程序
EN

Stack Overflow用户
提问于 2013-03-07 12:37:02
回答 1查看 2K关注 0票数 0

我试图用一个线性同余生成器在Matlab中解决以下问题。函数的代码行如下所示。m基本上是您可以预期的值范围的最大值,因此取决于问题。首先由时钟确定初始种子x,然后将每个随机数反馈到函数中产生一个新的随机数。这里给出了选择lcg值的规则,generator。我需要的是在指定时期内ac的良好值。

我的lcg代码

代码语言:javascript
复制
random_number = mod((a*x + c),m);
  • Q1需要1到52之间的随机数(扑克手的概率)。
  • Q2需要1到366之间的随机数(生日悖论)
  • Q3需要1到3之间的随机数(Monty问题)
  • Q4需要1到1000之间的数字

我知道这看起来可能很简单,但是用小范围实现这一点往往会产生一个小周期的模式,即连续重复4位数。

此外,也可能使用不同的m值并筛选出任何超出我所需范围的值,但老实说,我不认为这是必要的。非常感谢

EN

回答 1

Stack Overflow用户

发布于 2013-03-29 21:01:27

我会以不同的方式来处理这个问题:

  • 取一些已知的值(wikipedia有一个表)
  • 如果你拿它们,你可以假设*它们的分布是均匀的
  • 将结果缩放到您的范围,例如rnd()*52 / m + 1,并将其作为输出 *记住,“当你假设,你把你和我搞得屁滚尿流”;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15271440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档