草庐IT

random_room

全部标签

java - 序列化 java.util.Random

我正在开发一款简单的小游戏(主要是为了学习Java8和JavaFX中的新功能)。我拥有的功能之一是能够为游戏的随机数生成器提供种子,这样您就可以在不同的系统上与friend玩大致相同的游戏(想想Minecraftmap或The艾萨克的绑定(bind)游戏)。我想添加保存游戏以便稍后恢复的功能。查看java.util.Random类的文档后,我找不到获取随机数生成器当前种子的方法。我想出的在保存游戏后恢复随机数生成器的唯一方法是在保存时通过反射访问种子并使用它,或者在加载时播种初始种子并调用nextInt()一遍又一遍,直到我们将随机数生成器前滚到足以恢复游戏保存前的位置。

java - java.secure.random 是博彩业的充分选择吗?

Java在包java.secure.random中提供了一个加密安全的随机数生成器。如果我考虑RNG的播种和循环重新实例化之类的事情,是否可以使用这个数字生成器?或者我可以“按原样”使用数字生成器吗?有人用过这个发电机吗?编辑:要求是:a)在统计上独立b)在他们的范围内公平分布(在统计预期范围内)c)通过各种公认的统计测试d)加密强度高。 最佳答案 正如其他人所说,安全RNG的吞吐量可能有限。为了减轻这个您可以通过播种CPRNG来扩展安全随机性,或者您可以尝试优化您对比特流的使用。打个比方,要洗一副牌,你只需要226位,但是一个na

Java:Math.random() Max Value (double just less than 1)

我一直对这个有点好奇。Math.random()给出[0.0,1.0)范围内的值。那么它能给出的最大值(value)是多少呢?换句话说,小于1.0的最接近1.0的double值是多少? 最佳答案 Java使用64位IEEE-754表示,因此理论上小于1的最接近数字是十六进制表示形式的3FEFFFFFFFFFFFFFF,符号为0,指数为-1,52位有效数为1.9999999999999997。这大约等于0.9999999999999998。引用文献:IEEE-754Calculator.

random - 为什么 JDK 既有 Math.random() 又有 Random 类?

仅仅是因为“大型API综合症”还是生成在某些情况下更偏向的随机数?如果是……我认为控制偏见很重要。 最佳答案 他们是一样的,真​​的。只是一个方便的方法。检查javadochere.此外,您可以通过创建随机对象来重新播种,而Math.random()将使用静态Random实例。 关于random-为什么JDK既有Math.random()又有Random类?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

Java JCE 提供者 - "clean room implementation"是什么意思?

我需要编写一个JCE提供程序。我了解到我需要使用充气城堡洁净室实现。您能告诉我“洁净室实现”在这种情况下的含义吗? 最佳答案 在这种情况下,无尘室实现意味着代码仅根据描述和规范编写,无法访问任何可能有问题的代码。这很重要,因为Sun源代码以前的许可证与特别是GPL发行版不兼容。通过确保代码不是在没有访问此类代码的情况下编写的,可以保证以后不会发现Sun许可证适用于洁净室实现,然后再次与GPL许可证或任何其他限制不兼容。换句话说,它保证所显示的许可证将有效。 关于JavaJCE提供者-"c

java - Random.nextGaussian() 的问题

Random.nextGaussian()应该给出均值为0且标准差为1的随机数。它生成的许多编号都在[-1,+1]范围之外。我如何设置才能使其仅在-1到1范围内给出正态分布的随机数。 最佳答案 均值为0且标准差为1的高斯分布意味着分布的平均值为0,并且大约70%的总体位于[-1,1]范围内。忽略范围之外的数字-它们在两侧形成大约16%的边缘。也许更好的解决方案是生成具有mean=0和std.dev=0.5的分布。这将为您提供一个分布,其中大约96%的值在[-1,1]范围内。一个更好的解决方案是像上面那样逆向工作并使用大约的想法。99

java - 噪声产生 : 'Room Noise'

上周我正在开发一个世界生成器(用于Minecraft模组)。但是,我不只是在寻找Perlin噪声,而是在寻找基于细胞噪声的东西。我想生成一种地下实验室,存在几个不同大小的房间。为了解释这个问题,我使用了二维示例。噪声发生器获取一个网格单元位置(intx,inty),并返回具有以下结构的对象:booleantop;booleanright;booleandown;booleanleft;introomType;4个boolean值代表启用或禁用的墙:roomType分别代表房间的类型。最终的结果应该是这样的:在这里,背景棋盘图案代表基础网格,黑线代表墙壁。这只是一个可以生成的简单示例,但

java - 用于在两台机器上创建 java Random 的种子值相同

如果我在java程序中使用相同的随机种子值并在两台不同的机器上运行它,我会得到相同的一组数字吗?例如longseed=123L;//maybetakenfromsomedatabaseorsomethingjava.util.Randomran=newjava.util.Random(seed);intret=0;for(inti=0;i我总是得到ret=782ret=450ret=176ret=789ret=795ret=657ret=834ret=837ret=585ret=453如果我在我的电脑上多次运行这个程序,我会得到相同的一组数字..但假设有人设法获得我使用的secret种

java - 这个损坏的 Java Random.nextInt(long) 行为是怎么回事?

我发现当你给它一个2的幂时,这个方法似乎会惨败)和2的幂(互斥)总是相同;种子无所谓。例如:publicstaticvoidmain(String[]args){RandommRandom;for(inti=0;i我随意选择了2^4,但它似乎适用于任何2的幂。这是怎么回事?此外,我该如何避免这种情况? 最佳答案 出现这个问题有两个原因。Random类的相同种子。在nextInt(intn),如果n是2的幂1。Random类的种子相同。因为,您已经使用新的seed值启动了新的Random实例,这会影响nextInt值的生成。根据Ran

Java Random,种子的微小变化只会导致输出的微小变化

在用Java制作map生成器时,我发现他们的随机数生成器有一个相当令人不安的问题,具体来说,当两个RNG具有非常相似的种子(小整数不同)时,它们的第一个输出值将变得非常相似!示例代码:Randomr=newRandom();longn=100000;//Chooseanynumberr.setSeed(n);System.out.println(r.nextInt());r.setSeed(n+1);System.out.println(r.nextInt());这几乎打破了我对原始JavaRNG的信心,因为我使用坐标来为map生成器提供种子。有人可以建议重新定义Random.next