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

Leetcode 470. 用 Rand7() 实现 Rand10()

Leetcode 470. 用 Rand7() 实现 Rand10()
已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。

不要使用系统的 Math.random() 方法。

示例 1:

输入: 1
输出: [7]
示例 2:

输入: 2
输出: [8,4]
示例 3:

输入: 3
输出: [8,1,10]

在这里插入图片描述

目录

  • 题目分析
  • 算法介绍
  • 算法步骤
  • 算法流程
  • 算法代码
  • 算法分析
  • 相似题目

题目分析

这是一个关于生成均匀随机数的问题。题目要求实现一个rand10()函数,该函数返回一个1到10之间的均匀随机整数。这个问题可以通过调用一个已知的rand7()函数来解决,rand7()函数返回一个1到7之间的均匀随机整数。

算法介绍

要生成1到10之间的均匀随机整数,我们可以利用rand7()函数生成一个1到49之间的随机整数,然后将其映射到1到10的范围内。由于49不能被10整除,我们需要丢弃一些不均匀的结果并重新生成。

算法步骤

  1. 生成一个1到49之间的随机整数res,通过计算(rand7() - 1) * 7 + rand7()
  2. 如果res大于40,我们将其丢弃并重新生成,直到得到一个40或以下的数。
  3. 将得到的数对10取模,然后加1,得到一个1到10之间的均匀随机整数。

算法流程

开始
rand7 - 1
* 7
+ rand7
res > 40?
重新生成
res % 10
+ 1
返回结果
结束

算法代码

class Solution {
public:int rand10() {int res = (rand7()-1)*7 + rand7();;while(res > 40)res = (rand7()-1)*7 + rand7();return res % 10 + 1;}
};

算法分析

  • 时间复杂度:最坏情况下,我们需要多次调用rand7()来生成一个有效的随机数,因此时间复杂度取决于生成有效随机数所需的平均调用次数。
  • 空间复杂度:O(1),因为该算法只使用了有限的额外空间。

相似题目

题目链接
rand7()实现rand10()LeetCode 470

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【linux】kill命令
  • 【Java面向对象二】static的注意事项
  • 滑动窗口算法专题(1)
  • 【24华为杯数模研赛赛题思路已出】国赛F题第二套思路丨附参考代码丨免费分享
  • 详解数据结构中的链表结构
  • docker搭建个人网盘,支持多种格式,还能画图,一键部署
  • 软件卸载工具(windows系统)-geek
  • 虚拟机VMware安装+centos8
  • source ~/.bash_profile有什么用
  • Stylized Smooth Clouds 卡通风格化云朵包
  • js 将二进制文件流,下载为excel文件
  • 直接插入排序(C语言实现)
  • Spring 源码解读:手动实现Spring事件机制
  • 深入解析:HTTP 和 HTTPS 的区别
  • 2024年数学建模比赛题目及解题代码
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 2017-09-12 前端日报
  • Android系统模拟器绘制实现概述
  • Babel配置的不完全指南
  • Debian下无root权限使用Python访问Oracle
  • Django 博客开发教程 16 - 统计文章阅读量
  • es6要点
  • Git学习与使用心得(1)—— 初始化
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • Joomla 2.x, 3.x useful code cheatsheet
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • php的插入排序,通过双层for循环
  • spark本地环境的搭建到运行第一个spark程序
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • yii2权限控制rbac之rule详细讲解
  • 关于 Cirru Editor 存储格式
  • 技术发展面试
  • 提醒我喝水chrome插件开发指南
  • 译自由幺半群
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 大数据全解:定义、价值及挑战
  • ​ArcGIS Pro 如何批量删除字段
  • (二)学习JVM —— 垃圾回收机制
  • (六)Flink 窗口计算
  • (十八)Flink CEP 详解
  • (十六)视图变换 正交投影 透视投影
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (五)MySQL的备份及恢复
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)C#调用WebService 基础
  • .libPaths()设置包加载目录
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .Net Remoting常用部署结构
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 中选择合适的文件打开模式(CreateNew, Create, Open, OpenOrCreate, Truncate, Append)
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉