随机化一个 BigInteger

2024-01-12

I'm looking to randomize a BigInteger. The intent is to pick a number from 1 to 8180385048. Though, from what I noticed, the BigInteger(BitLen, Random) does it from n to X2-1, I'd want some unpredictable number. I tried to make a method that would do it, but I keep running into bugs and have finally given in to asking on here. :P Does anyone have any suggestions on how to do this?


从文档来看Random.nextInt(int n) http://download-llnw.oracle.com/javase/6/docs/api/java/util/Random.html#nextInt%28int%29显然需要解决同样的问题,他们似乎得出的结论是,你不能比“超出范围时重新采样”做得更好,但惩罚预计可以忽略不计。

来自文档:

The algorithm is slightly tricky. It rejects values that would result in an uneven distribution (due to the fact that 231 is not divisible by n). The probability of a value being rejected depends on n. The worst case is n=230+1, for which the probability of a reject is 1/2, and the expected number of iterations before the loop terminates is 2.

我建议你简单地使用随机化构造函数 http://download.oracle.com/javase/6/docs/api/java/math/BigInteger.html#BigInteger%28int,%20java.util.Random%29您提到并迭代,直到达到范围内的值,例如如下所示:

public static BigInteger rndBigInt(BigInteger max) {
    Random rnd = new Random();
    do {
        BigInteger i = new BigInteger(max.bitLength(), rnd);
        if (i.compareTo(max) <= 0)
            return i;
    } while (true);
}

public static void main(String... args) {
    System.out.println(rndBigInt(new BigInteger("8180385048")));
}

对于您的特定情况(最大值 = 8180385048),必须重申的概率(即使一次)约为 4.8%,所以不用担心:-)

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

随机化一个 BigInteger 的相关文章

随机推荐

  • Visual studio 2015 Logitec Setpoint 软件按键与鼠标按钮

    I ve just installed the Setpoint logitech software on a new PC with windows server 2012 I ve assigned to one of the butt
  • 是否有用于生成 .ico 文件的 Python 库? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找创造favicon ico从 Python 以编程方式读取文件 但 PIP 仅支持读取ico
  • 在 VS Code 中禁用斜体语法突出显示

    一些单词 function if else return等 会自动格式化为斜体是 VS Code 我怎样才能禁用这种行为 您可以使用以下用户配置强制 VS 禁用主题的所有斜体 editor tokenColorCustomizations
  • 当两个用户/朋友彼此靠近时发出警报 - Android Proximity

    我尝试搜索但找不到任何东西 我的问题是 如果 2 个或更多用户彼此靠近 我如何提醒他们 在android中使用地理围栏或其他东西 假设 如果用户 A 在足球场中 而用户 B 在该足球场附近行走 然后 UserA 和 UserB 自动收到 U
  • 使用自定义 IP 从 Docker 注册到 Eureka

    我在 Docker VM 中运行 Spring Cloud Eureka 我有注册到它的服务 但它们使用 Docker VM 内部的 IP 地址 但为了能够正确使用它们 我需要它们使用我可以从 VM 外部访问的 IP 地址 例如 在我的虚拟
  • SQLite3 导入 CSV 并排除/跳过标头

    我正在尝试将我的数据文件 其中有十几个左右 放入 SQLite 中的表中 每个文件都有一个标题 我将在未来的一年中多次收到它们 所以我想 当我收到文件时 避免编辑每个文件以删除标头 避免依靠 shell 脚本或 Python 来执行此操作
  • Outlook Javascript API - window.open 无法在 Outlook 2016 桌面/Windows 上运行

    我有一个用新的 JavaScript API 编写的 Office 加载项 其中有一个 JS 函数 经过一些逻辑后 该函数在新窗口中打开一个 Web 应用程序window open url blank 当从 Outlook Web 中的加载
  • 我可以设置 Javascript 对象的类型吗?

    我正在尝试遵循 Doug Crawford 的 超级构造函数 模式 使用 Javascript 的一些更高级的 OO 功能 但是 我不知道如何使用 Javascript 的本机类型系统设置和获取对象的类型 我现在的情况是这样的 functi
  • CSS:如何摆脱默认窗口“填充”?设置为 100% 宽度的元素不会到达窗口边框

    所以我有一个直接放置在 body 内部的元素 div Some stuff div Other stuff 以下是使用的CSS body text align center header margin auto 因此 header div
  • 使用 Jeff Atwood 的示例清理 HTML

    我正在使用 Jeff Atwood 发现的代码清理我的 Htmlhere http refactormycode com codes 333 sanitize html 但我遇到的问题是当我将 Markdown 链接输入表单时 它们被删除
  • 使用java.util.logging登录控制台

    我只想使用 java util Logging 登录控制台 Logger log Logger getLogger my logger log setLevel Level ALL ConsoleHandler handler new Co
  • 从另一个 docker 容器连接到 Mongodb docker 容器

    我正在尝试从运行我的节点js代码的另一个docker容器连接在docker容器中运行的mongo DB 所以我使用以下命令运行 MongoDB docker docker run name my local mongo v mongo da
  • 从数据库下载exe文件

    我已经将一些 exe 文件上传到数据库中 因为我不希望它们可供公开访问 我尝试使用链接按钮和通用处理程序来使用以下代码提供文件 Context Response Clear Context Response ContentType appl
  • 请求 ruby​​-on-rails 应用程序会出现 Psych::BadAlias 错误

    我从应用程序目录运行 Rails 服务器 但是当我尝试从浏览器发出请求时 http localhost 3000 我收到以下错误 Psych BadAlias 无法加载Rails application database configura
  • WebRTC 连接在本地网络之外无法工作

    我们对 webrtc 双向视频和音频流进行了以下设置 Mobile Android应用程序使用谷歌网络RTC https webrtc org 实现java包装器 测试了这两个库 implementation org webrtc goog
  • Pandas 将字典列表分解为行

    拥有这个 items name 0 a 2 b 1 a 4 b 3 this 1 a 2 b 1 a 4 b 3 that 但希望将字典对象列表分解为 展平 为实际行 如下所示 a b name 0 2 1 this 1 4 3 this
  • Angular 2 Promise/Observable 链两个事件?

    我想知道是否可观察到的 or promise可用于 Angular 2 中的以下用例 有两个异步上传任务 我想知道如何检测这两项任务都已完成 我的上传任务 实现于promise但它很容易改变为可观察到的如果需要的话 是这样的 myServi
  • 在 macOS 中通过命令行与 Siri 交互

    我在手机和手表上使用 Siri 随时随地创建提醒 当我在办公室时 我不想使用 Siri 打扰安静 因此我通常使用与 提醒 应用程序集成的 Alfred 工作流程 或者直接使用 提醒 应用程序 然而 两者都有一个相当笨拙的界面 如果我可以在命
  • Zbar SDK - 缺少所需的架构 x86_64

    我在最近的 Xcode 5 1 中构建应用程序时遇到了一个问题 编译失败 并出现 架构 x86 64 的未定义符号 错误 我使用有效架构构建我的项目 armv7 armv7s 和 arm64 切换到最新的环境 Xcode 后 我在相同的架构
  • 随机化一个 BigInteger

    I m looking to randomize a BigInteger The intent is to pick a number from 1 to 8180385048 Though from what I noticed the