Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 矿井煤泥计算器算法_Java_Python_Minecraft - Fatal编程技术网

Java 矿井煤泥计算器算法

Java 矿井煤泥计算器算法,java,python,minecraft,Java,Python,Minecraft,我想创建一个minecraft粘液计算器,我已经找到了算法。然而,我对java不太了解,我想把它转换成python。要做到这一点,我需要知道像0x4c1906这样的东西意味着什么。这只是一个基本指针,我可以在python中保持不变吗?我必须使用某种二进制转换还是什么?我对指针是什么以及在python编程中应该如何处理它们感到困惑。0x4c1906不是指针,它是十六进制值,在十进制表示法中是4987142 java代码片段中的几个十六进制常量 Random rnd = new Random(see

我想创建一个minecraft粘液计算器,我已经找到了算法。然而,我对java不太了解,我想把它转换成python。要做到这一点,我需要知道像
0x4c1906
这样的东西意味着什么。这只是一个基本指针,我可以在python中保持不变吗?我必须使用某种二进制转换还是什么?我对指针是什么以及在python编程中应该如何处理它们感到困惑。

0x4c1906
不是指针,它是十六进制值,在十进制表示法中是4987142

java代码片段中的几个十六进制常量

Random rnd = new Random(seed + 
                    (long) (xPosition * xPosition * 0x4c1906) + 
                    (long) (xPosition * 0x5ac0db) + 
                    (long) (zPosition * zPosition) * 0x4307a7L + 
                    (long) (zPosition * 0x5f24f) ^ 0x3ad8025f);
return rnd.nextInt(10) == 0;

用于计算随机数生成器(RNG)的种子。要复制java代码的效果,需要使用java运行时系统提供的RNG。在C++中,用C++代码与java很容易计算种子的相同值,并且容易通过Srand()来初始化RNG,但是C++中的随机数序列通常会不同于java。正如在AN中所指出的,不同的C++实现通常使用不同的RNG,并且给定任何种子启动,将生成不同的数字序列。相反,为
Random
类指定“特定算法”,以使结果可复制和可移植。要获得相同的结果,您需要实现额外的代码位,请参见链接。

如果您想用Python编写代码,但使用Java的伪随机数生成器,请查看Jython

所以我可以把这个数字放在python代码中,而不是十六进制值,这样就可以了吗?或者我应该以某种方式将它保留为十六进制值,以防它被截断?@bspymaster它不应该被截断或其他任何东西,因为这只是十进制表示法。那么,为什么他们首先要将它放在十六进制表示法中呢?保存位…?@bspymaster我不能说。我不知道他们为什么选择这样表现。它不保存任何位,除了可能在字符串表示中。但这是一种在编程中普遍使用的格式。那么,您认为将其转换为python会更容易吗?他在Java中使用不同的随机数生成器有一个很好的观点。我甚至没想过。