美文网首页
已知rand7,构造rand10

已知rand7,构造rand10

作者: 小码弟 | 来源:发表于2018-10-17 18:12 被阅读0次

思路: 要构造1~10 区间上的均匀分布整数,先保证x均匀散布在区间1~10*n,那么做一次缩放x%10+1 , 就把x投影到1~10 的区间内了。
按照这个思路,rand7 产生1~7的数, rand7()-1 产生06的数,乘以7就是0�42的区间,把这个结果和rand7相加,产生149的区间随机数。接着把4149的数剔除,就是上面讨论的结果。

int rand10(x)
{
   int x;

   do{
   x = (rand7() - 1)*7 + rand7();
  }while(x > 40);

  return x%10 + 1;
}

相关文章

网友评论

      本文标题:已知rand7,构造rand10

      本文链接:https://www.haomeiwen.com/subject/xgolzftx.html