Park-Miller-Carta PRNG随机发电机始终返回2.33E-10 - java

我正在尝试使Park-Miller-Carta PRNG随机数生成器实现Java实现。

以下是ActionScript 3 from here中Random函数的实现。

return (_currentSeed = (_currentSeed * 16807) % 2147483647) / 0x7FFFFFFF
                                                          + 0.000000000233;

我不太幸运能在Java中使用它:

int seed = 20; //for example.

public double random() {
    seed = (seed * 16807) % 2147483647;
    return seed / 0x7FFFFFFF + 0.000000000233;
}

这总是返回2.33E-10。有什么想法我在Java中做错了吗? (AS3代码返回0.0001565276181885122,然后对于前两个响应以0.6307557630963248的形式返回20)。

参考方案

seed / 0x7FFFFFFF

是整数运算,因为两个参数都是整数。整数除法总是将“真”结果向下舍入。在这种情况下,真实结果在0到1之间,因此该操作始终返回0。

要获得浮点结果,至少一个参数必须是浮点数,可以这样实现:

return (double)seed / 0x7FFFFFFF + 0.000000000233;

使用Apache Kafka 0.10.0 API和Java创建Kafka经纪人集群 - java

我想使用Kafka 0.10 API和Java来创建代理群集。据我所读kafka_2.11-0.10.0.0.jar是否支持使用创建代理:import kafka.cluster.Broker; import kafka.cluster.Cluster; 但是我找不到这样做的任何文档。我最近读了[1],它讲述了如何在Kafka API中使用Java创建主题。…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

Java:从类中查找项目名称 - java

仅通过类的实例,如何使用Java反射或类似方法查找项目名称?如果不是,项目名称(我真正想要的是)可以找到程序包名称吗? 参考方案 项目只是IDE使用的简单组织工具,因此项目名称不是类或JVM中包含的信息。要获取软件包,请使用Class#getPackage()。然后,可以调用Package#getName()将包作为您在代码的包声明中看到的String来获取…