当前位置: 首页 > news >正文

rand5生成rand7

rand5 通常指的是一个能够生成 1 到 5 之间随机整数的函数,而 rand7 指的是一个能够生成 1 到 7 之间随机整数的函数。

方法:拒绝采样

核心思想:生成一个范围更大的随机数,然后通过取余数的方式将其缩减到 1 到 7 的范围内。由于 rand5 生成的是 1 到 5 的随机数,因此我们可以利用这个特性来生成一个 1 到 25 的随机数(因为 5*5=25),然后对 7 取余数,最后加 1 来调整范围。

具体的步骤:

1、生成更大的随机数:
首先生成两个 rand5 的结果,分别记为 a 和 b。这样,a 和 b 都是 1 到 5 之间的整数。将 a 和 b 相乘,得到一个 1 到 25 之间的数(因为 5*5=25)。然后,将这个乘积对 7 取余数,得到一个 0 到 6 之间的数。

2、调整范围:
由于需要的是 1 到 7 之间的数,所以我们将上一步得到的余数加 1,这样就能确保结果是 1 到 7 之间的数。

3、拒绝采样:
在这个过程中,我们可能会得到 0,但 0 不在我们想要的范围内(1 到 7)。因此,如果结果是 0,就重新执行上述过程,直到得到一个非零的结果。

public int rand7() {int num;do {// 生成 1 到 25 之间的随机数,然后对 7 取余数num = (rand5() + (rand5() - 1) * 5) % 7 + 1;} while (num > 7); // 由于我们的计算结果范围是 1 到 7,所以不需要这个检查return num;
}

http://www.mrgr.cn/news/60685.html

相关文章:

  • 2024.10.25 软考学习笔记(知识点)
  • 单节点kubernetes-1.20二进制部署
  • UML总结
  • 深度学习优化器【学习率调整和梯度修正,Optimizer】
  • 【TPAMI 2024】即插即用的FreqFusion特征融合模块
  • 文件上传绕过的方法和原理
  • 代码随想录之字符串
  • Linux 进程间通信_匿名管道
  • IE快捷方式加载特定主页
  • 二叉树的存储方式和遍历方式
  • 错误概率平均错误概率的计算
  • WPF+MVVM案例实战(九)- 霓虹灯字效果控件封装实现
  • 【Javaee】网络原理—http协议(一)
  • 特种作业操作高压电工题库
  • Spring AOP
  • 洛谷P1025-数的划分 详解
  • DNS域名解析服务器
  • 大模型低资源部署策略
  • 驱动-----LED
  • Cesium着色器
  • NFT Insider #153:The Sandbox 推出 Biggie 奇妙宇宙体验,ApeChain 推出顶级交易员游戏
  • RHCE的学习(8)
  • leetcode-63-不同陆路径II
  • 超子物联网HAL库笔记:[汇总]
  • 开发维护初学者指南——软件维护
  • 小米大模型岗离职了,聊一下现在的面试....