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

有一个[1,5]的等概率随机函数fx(),在不改变fx()函数的情况下,利用fx()函数做出一个[1,7]的等概率随机函数。

题目解析

  1. 首先需要将fx函数转化为一个0,1的等概率的心函数
  2. 对要转换的函数的范围分析
  3. 通过0,1等概率函数利用二进制规则转换为所需的函数
// 制作1-5上的随机函数
public static int fx() {  return (int) (Math.random() * 5) + 1;  
}

第一步:将fx函数转化为一个0,1的等概率的心函数

// 将fn转换为0,1等概率随机函数  
public static int fn2() {  int fn = fn();  while (fn == 2) {  fn = fn();  }  return fn < 3 ? 0 : 1;  
}

第二步:对要转换的函数的范围分析

1~7等概率,观察我们制作随机函数,我们也可以先做一个0~6的等概率函数,然后再加一即可得到1~7的等概率函数
第三步:通过0,1等概率函数利用二进制规则转换为所需的函数
这里要做的内容就变为“如何通过等概率发射器生成二进制0~6等概率函数”。
二进制想要表达0~6之间的所有数最小需要四位。只需要连续roll4次等概率发射器即可生成从0~8的随机数,且每次得到的最终结果是等概率的。
但是我们不需要除了0~6以外的数值,所以如果大于6就再从头来一次,直到在范围以内在停止。

public static int fn3() {  int a = 0;  do {  String result = "";  for (int i = 0; i < 4; i++) {  result += fn2();  }  a = Integer.parseInt(result, 2);  }while (a > 6);  return a + 1;  
}
http://www.hskmm.com/?act=detail&tid=18278

相关文章:

  • WSL2 磁盘清理
  • 质因数分解
  • 关于OneBot的QQ机器人探索2
  • putty
  • 深入解析:PHP 8.0+ 高级特性深度探索:架构设计与性能优化
  • 客服系统源码二次开发
  • 喜讯!狮桥集团成为天津市行政执法监督企业联系点,共筑法治营商新环境!
  • redis实现分布式锁2
  • 题解:P7334 [JRKSJ R1] 吊打
  • 当不小心误触了一个事件该如何删除呢
  • 烧录工具使用方法大公开:实用说明文档奉上
  • 警惕新型XCSSET macOS恶意软件变种,专攻Xcode开发者
  • 前端面经-高级开发(华为od) - 实践
  • 2025权威排行榜:公众号编辑器Top 6深度测评,哪款最适合你
  • 个人简介
  • 【图床】存几张图
  • 完整教程:Sass:CSS 预处理器
  • DDL表操作
  • 第二周第五天2.5
  • yolo
  • 什么是 glTF:完整指南
  • 垃圾收集器与核心算法详解(上)
  • 在Debian系统上修改开源软件源代码制作patch - 教程
  • WSL2搭建wordpress遇到的一点问题
  • 需求的系统规划 3
  • 430亿美元押注英国,Salesforce 加码 AI 投资
  • C# 中 ref 和 out 的学习笔记
  • C# 序列化三种方式
  • 区别:Modbus RTU 和 Modbus TCP
  • 记录安装机器/深度学习环境(conda、CUDA、pytorch)时的一些问题