在 O(log n) 时间内从二叉树获取随机数

2023-12-20

是否有可能在 O(log n) 时间内从平衡二叉搜索树中获得均匀分布的随机值(调用该函数意味着获得树中任何值的可能性相同)?

我最初的想法是生成一个随机数0、1或2。如果是0,则从当前节点走左路径,如果1,则走右路径,否则该节点的值为随机值。如果命中叶节点,则获取该节点的值。我不认为这会是随机分布的。

这是出于好奇,而不是针对特定应用。

如果您需要任何说明,请告诉我。

一个例子是如果你有一棵树

     1
    / \
   2   5
       /
      3

调用时统一返回数字1、2、3、5int get_random_number()

澄清:所有其他正常的 BST 操作应保持 O(log n),如 insert()、delete() 等。


你的想法不会产生随机分布。无论树的大小,根都有 1/3 的机会被采摘。

如果知道树中元素的数量,则生成一个介于 1 和 N 之间的数字 k,并获取树中第 k 个最大的元素。看here https://stackoverflow.com/questions/2329171/find-kth-smallest-element-in-a-binary-search-tree-in-optimum-way/2329236#2329236一种在 O(logn) 中实现平衡树的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 O(log n) 时间内从二叉树获取随机数 的相关文章

  • 检查有效的 IMEI

    有人知道如何检查有效的 IMEI 吗 我找到了一个可以检查此页面的功能 http www dotnetfunda com articles article597 imeivalidator in vbnet aspx http www do
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 设置种子增强::随机

    我想通过使用不同的种子数来重置随机序列 运行此测试代码时 boost mt19937 gener 1 boost normal distribution lt gt normal 0 1 boost variate generator
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • 优化计算中使用的 # 个线程的算法

    我正在执行一个操作 我们将其称为CalculateSomeData CalculateSomeData 在连续的 代 中运行 编号为 1 x 整个运行中的代数由CalculateSomeData 的输入参数固定 并且是先验已知的 完成一次生
  • 删除近排序数组中未排序/离群元素

    给定一个像这样的数组 15 14 12 3 10 4 2 1 我如何确定哪些元素乱序并删除它们 在本例中为数字 3 我不想对列表进行排序 而是检测异常值并将其删除 另一个例子 13 12 4 9 8 6 7 3 2 我希望能够删除 4 和
  • 无法理解Peterson算法的正确性

    我在这里讨论彼得森算法的一个场景 flag 0 0 flag 1 0 turn P0 flag 0 1 turn 1 while flag 1 1 turn 1 busy wait
  • 覆盖二维平面上给定点的最小圆

    问题 覆盖 2D 平面上给定 N 个点的圆的最小可能直径是多少 解决这个问题最有效的算法是什么 它是如何工作的 这是最小圆问题 http en wikipedia org wiki Smallest circle problem 请参阅参考
  • 用于查找最近邻居的空间划分算法如何工作?

    为了找到最近的邻居 空间分区 http en wikipedia org wiki Nearest neighbor search Space partitioning是算法之一 它是如何工作的 假设我有一组 2D 点 x 和 y 坐标 并
  • String.contains() 的时间复杂度

    String contains 的时间复杂度是多少 假设 n 是与另一个长度为 k 的字符串进行比较的字符串的长度 如果不知道您感兴趣的 String contains 的实际实现 就没有答案 或者你打算使用什么算法 一个完全幼稚的实现可能
  • sigmoid 的导数

    我正在使用反向传播技术创建一个神经网络进行学习 我知道我们需要找到所使用的激活函数的导数 我正在使用标准 sigmoid 函数 f x 1 1 e x 我已经看到它的导数是 dy dx f x f x 1 f x 这可能是一个愚蠢的问题 但
  • 计算序列而无法存储值?

    问题陈述 here http www spoj com problems EC SER 令 S 为无限整数序列 S0 a S1 b Si Si 2 Si 1 对于所有 i gt 2 你有两个整数 a 和 b 您必须回答有关序列中第 n 个元
  • 密文窃取算法 - 哪一种是正确的?

    网络上提出了两种算法 在这两种算法中 第一部分是相同的 1 Pad the last partial plaintext block with 0 2 Encrypt the whole padded plaintext using the
  • 用于在链表中查找结点的生产代码

    我在一次采访中被问到这个问题 我被要求编写代码 用于在 O 1 空间和线性时间的生产环境中在链表 其形式为 Y 形式 双臂不一定相等 中查找结点 我想出了这个解决方案 我以前在某处见过 1 Measure lengths of both l
  • rand() 播种与 time() 问题

    我很难弄清楚如何使用 rand 并使用 Xcode 用 time 为其播种 我想生成 0 到 1 之间的随机十进制数 该代码为我提供了元素 1 和 2 看似随机的数字 但元素 0 始终在 0 077 左右 有什么想法吗 我的代码是 incl
  • 随机定位的 div,不重叠

    所有 div 都像我需要的那样 随机 放置 但它们偶尔会重叠 这只是一个机会问题 我怎样才能防止这种情况发生 理想情况下我能够设置它们之间的最小距离 我可以通过进一步开发当前的 javascript 来实现这一目标吗 我需要考虑完全不同的方
  • 寻找公共子集的算法

    I have N number of sets Si of Numbers each of a different size Let m1 m2 mn be the sizes of respective sets mi Si and M
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 有向未加权图中的最长非循环路径

    什么算法可用于找到未加权有向无环图中的最长路径 动态规划 http en wikipedia org wiki Dynamic programming 它也被引用于最长路径问题 http en wikipedia org wiki Long
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该

随机推荐

  • 识别 Unix 域套接字连接的另一端

    我试图找出哪个进程正在持有 unix 域套接字的另一端 在一些strace输出 我已经识别出一个给定的文件描述符 该文件描述符涉及我当前正在调试的问题 并且我想知道哪个进程位于该描述符的另一端 由于该套接字有多个连接 因此仅通过路径名是行不
  • 如何计算Python中包含字符串的两个列表的杰卡德相似度?

    我有两个包含用户名的列表 我想计算 Jaccard 相似度 是否可以 This https stackoverflow com questions 11911252 python jaccard distance using word in
  • 使用ajax调用PHPExcel下载

    App import Vendor PHPExcel Classes PHPExcel objPHPExcel new PHPExcel objPHPExcel gt getActiveSheet gt setTitle ReceivedM
  • 自定义 URL WordPress REST API

    我正在构建一个使用 WordPress 后端数据的应用程序 大多数数据都缓存在服务器上的 JSON 文件中 但应用程序允许放置注释 因此必须从应用程序内部调用 API 我担心当 WordPress 决定更改 URL 时 wp json wp
  • PHP版本的ASP.NET/C# property属性类

    有这样的事吗 我想在 PHP 中做这样的事情 但我无法从 PHP 文档中看到如何做到这一点 public class User ValidationBase NotNullOrEmpty Message Please enter a use
  • 像访问单个数组一样访问结构成员?

    我有两个结构 其值应该计算经过深思熟虑的平均值 就像这个简化版本 typedef struct int v move v read v suck v flush v nop v call values typedef struct int
  • Android 画廊选择,如 Whatsapp

    这个问题以前曾被问过 但恐怕答案可能已经过时了 如何使用原生图库应用程序 例如 API 14 开启 来实现像 WhatsApp 一样的多图片选择 你的意思是 Intent intent new Intent intent setType i
  • MS Access 导出错误:“保留错误 (-1);没有关于此错误的消息。”

    我正在尝试导出Select来自 Access 数据库的查询 我以管道分隔的文本文件形式给出 它曾经有效 但后来客户让我更改查询 我这样做了 现在我得到了错误 保留错误 1 没有关于此错误的消息 当我尝试导出时 导出失败 我以前从未遇到过此错
  • 如何设置 QML 图表视图的缩放原点

    我正在使用 QT QML 和 QTCharts 开发数据演示应用程序 我正在使用 ChartView 和线系列来显示 XY 数据 除了捏合和缩放图表之外 一切都有效 该应用程序针对移动触摸设备 我希望能够捏合和缩放图表并将缩放原点设置为捏合
  • 如何告诉 VS Code 在 CMake 项目中的何处查找头文件和源文件?

    我有一个 C 项目的复杂目录结构 其中 CMAKE 控制某个项目使用哪些文件 我尝试使用 VS Code 的 CMake 扩展 但效果不太好 有没有办法告诉 VS Code 到底使用了哪些文件以便能够在代码中导航 Open the Comm
  • 在 WPF DataGrid 的各个单元格上设置删除线的最佳方法?

    在 WPF DataGrid 的各个单元格上将字体设置为删除线样式的最佳 简单 方法是什么 我知道的选项是在单个单元格中插入 TextBlock 控件或使用 DataGridTemplateColumn 并使用其中的 TextDecorat
  • HTML5 视频无法在 crossOrigin="anonymous" 的情况下播放

    我正在尝试将 HTML5 视频播放器集成到我的应用程序中 我的视频源和标题 用于轨道标签 来自不同的域 当我使用
  • 让UIView传递触摸事件?

    有没有办法让 UIView 无响应并传递所有触摸事件 基本上我只想在其他 UIView 之上显示图形而不阻止触摸事件 如果发送到您的视图的事件没有实现任何事件处理方法 则该事件将通过响应者链 您还可以设置userInteractionEna
  • 哪个性能更好?静态与对象

    我设计了一个 C 控制台应用程序 使用 OOP 设计来合并和拆分大文件 大约 4GB 大小 它涉及读 写 xml 平面文件和图像 我为读者和作家开设课程 合并大约花了00 12 而分裂则花了超过04 30的时间 然后 我通过将输出文件分发到
  • ActiveRecord find_or_build_by

    我想表演 XXX find or build by language id attributes I found XXX find or initialize by language id attributes 但这只设置了 languag
  • 代码 = 3072 设置备用应用程序图标时“操作已取消”

    我正在尝试设置一个备用应用程序图标 https developer apple com documentation uikit uiapplication 2806818 setalternateiconname named MyIcon在
  • oauth-private.key 不存在或不可读

    因此 我从 Bitbucket 导入了另一个项目并尝试使用启动它php artisan serve 我总是收到此错误 LogicException Key path file var www html DesignViewer5 stora
  • 如何修复编译时 -lfl 缺失的 ld 库?

    我正在尝试翻译我的 spl文件转换成C文件 因为没有编译器 我有一个示例 Hello World spl 文件 并且我已经下载了莎士比亚编程语言 http shakespearelang sourceforge net report sha
  • jQuery Datepicker - 自动为所有日期选择器定义 altField

    我的所有日 期选择器都有一个自动生成的隐藏字段 该字段与日期选择器输入具有相同的 ID 但前面带有下划线 div class datepicker div
  • 在 O(log n) 时间内从二叉树获取随机数

    是否有可能在 O log n 时间内从平衡二叉搜索树中获得均匀分布的随机值 调用该函数意味着获得树中任何值的可能性相同 我最初的想法是生成一个随机数0 1或2 如果是0 则从当前节点走左路径 如果1 则走右路径 否则该节点的值为随机值 如果