如何在一定范围内生成安全的统一随机数?范围可能在0到100之间。(上限不是2的幂)。
<代码>java。安全SecureRandom似乎提供了范围0。。2^n。
尝试以下代码捕捉
SecureRandom random = new SecureRandom();
int max=50;
int min =1;
System.out.println(random.nextInt(max-min+1)+min);
你能做到的
Random rand = new SecureRandom()
// 0 to 100 inclusive.
int number = rand.nextInt(101);
或
// 0 inclusive to 100 exclusive.
int number = rand.nextInt(100);
注意:这比say(int)(rand.nextDouble()*100)
更有效,因为nextDouble()需要创建至少53位的随机性,而nextInt(100)创建的随机性小于7位。
问题内容: 您能告诉我任何生成非均匀随机数的方法吗? 我正在使用Java,但是代码示例可以随心所欲。 一种方法是通过将两个统一的随机数加在一起(即滚动2个骰子)来创建歪斜分布。 问题答案: 您想要什么分布的偏差? 这是一种始终有效的技术,但并不总是最有效的。累积扰动函数P(x)给出值低于x的时间的分数。因此,在x的最小可能值处P(x)= 0,在x的最大可能值处P(x)= 1。每个分布都有一个唯一的
本文向大家介绍Java 生成给定范围内的随机数,包括了Java 生成给定范围内的随机数的使用技巧和注意事项,需要的朋友参考一下 为了生成给定范围内的随机数,Java代码如下- 示例 输出结果 名为Demo的类包含主要功能。在这里,将创建一个新的随机实例以及一个新的数组列表。创建随机元素并将其分配给变量。使用add函数将这些随机变量添加到列表中。这些元素显示在控制台上。
问题内容: 我有两个如下的双打 使用随机生成器,我需要在min和max范围之间创建一个双精度值。 但是这里没有什么可以指定范围的。 问题答案: 在Java 7发行之前曾问过这个问题,但是现在,还有另一种使用Java 7(及更高版本)API的可能方式: 将返回介于最小值(包含)和最大值(不含)之间的伪随机双精度值。范围不一定是,可以是。
问题内容: 问题 I的 特定实例 的int范围是1-100。我想在此范围内生成n个总数,这些总数应 尽可能均匀地分布, 并包括第一个和最后一个值。 例 我目前所拥有的 实际上是一种可行的方法,但是我一直觉得自己在想这个问题,而错过了一些更简单的方法?这是最有效的方法还是可以改进? 请注意,我确保此函数将始终至少返回范围的下限值和上限值。所以,我强迫 仅作为搜索参考,我正在使用它来从渲染的序列中采样
问题内容: 我看过很多文章,解释了这个问题,但是他们都使用整数值,老实说,我并没有完全理解它,所以这个问题: 我正在尝试在Java中生成从(-1554900.101)到(52952058699.3098)范围的随机数,我想知道是否有人可以向我解释这一点,因为我真的很想理解它。 我的想法:这是正确的方法吗?1)生成一个在我指定范围内的随机整数2)将生成的数除以pi以得到float / double随
我想生成1到4范围内的随机数,4包括。 以下是我的代码: 然而,我在循环中运行上述代码,不希望重复随机数。现在发生的事情通常是: 作为我的输出。 在这里,虽然数字在范围(1-4)内是随机的,但在前3次迭代中经常像数字“1”一样重复。 我正在寻找的是一种在循环中获得非重复随机数的方法。我知道的一个简单的方法是在当前迭代和比较之前保留最后一个随机数,但我相信一定有更好的解决方案。 提前谢谢。