Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.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_Random_Noise - Fatal编程技术网

Java 如何从二维坐标和种子中获取随机数?

Java 如何从二维坐标和种子中获取随机数?,java,random,noise,Java,Random,Noise,我正在尝试一些基于噪声的地形生成,我需要从坐标点和种子中获得一个随机点。现在,我正在努力解决的困难部分是,如果种子是相同的,那么从同一点返回的数字是相同的。(random.nextDouble()使其直接转到其他数字) 我试过做一些等式: return ((int) ((randomKey1.charAt((5 ^ x) % 127)) + (int) ((randomKey2 .charAt(Math.abs(z ^ 2 % 64) % 127)))) / 256f

我正在尝试一些基于噪声的地形生成,我需要从坐标点和种子中获得一个随机点。现在,我正在努力解决的困难部分是,如果种子是相同的,那么从同一点返回的数字是相同的。(random.nextDouble()使其直接转到其他数字)

我试过做一些等式:

return ((int) ((randomKey1.charAt((5 ^ x) % 127)) + (int) ((randomKey2
            .charAt(Math.abs(z  ^ 2 % 64) % 127)))) / 256f * 40f);
但这并不完全有效,因为如果你交换x和z坐标,你会得到一个类似的数字,导致地形看起来像是对角镜像的

已解决:

double getRatCor(int x, int z) {
    double a;

    Random r = new Random(seed + (x*10000) + (z*100));
    a = r.nextDouble()*40;
    System.out.println(a);
    return a;
}
怎么样

/**
* return random number with seed based on coordinates.
*/
double locationValue(int x,int y){
    long seed = z;
    seed = x + (seed << 32); // make x and z semi-independent parts of the seed.
    Random r = new Random(seed);
    return r.nextDouble();
}
/**
*基于坐标返回带种子的随机数。
*/
双位置值(整数x,整数y){
长种子=z;

seed=x+(seed我不理解你的问题。如果你随机调用setSeed(),如果你使用相同的seed,你总是会得到相同的数字。但是我需要为每个坐标使用不同的随机数,即使我多次调用坐标,也必须始终相同。因为如果你这样做。nextWhatever()它切换到另一个数字,但它必须与种子保持一致。哦,谢谢!效果相当好,我做的有点不同,但使用的是相同的概念!