Java - 我如何知道 Math.rand() 或 Random 将生成哪个数字?

标签 java algorithm

这是我正在尝试解决的一个算法问题(它是用韩语写的。):https://www.acmicpc.net/problem/10944

如果我简单地翻译问题,我需要生成一个介于 1 到 10,000 之间的数字。结果数必须与服务器(裁判)生成的随机数相同

这可能吗?我能猜出系统服务器会生成什么吗?我能把它与我的程序结果相匹配吗?

我发现在 Java 中有两种生成随机数的方法。

  1. 随机
  2. Math.random()

而且我可以使用 Random 操作(或预定义)结果。我只是认为有可能解决这个问题。

例如:

import java.io.IOException;
import java.util.Random;

public class Solution {
    public static void main(String[] args) throws IOException {
        Random rnd = new Random(1);
        System.out.println(rnd.nextInt(10000));

        rnd = new Random(1);
        System.out.println(rnd.nextInt(10000));
    }
}

显示相同的结果,因为Random的参数相同。我试过随机。但我无法解决这个问题。

像这样:

import java.io.IOException;
import java.util.Random;

public class Solution {
    public static void main(String[] args) throws IOException {
        Random rnd = new Random(1);
        System.out.println(rnd.nextInt(10000));
    }
}

我记得,Math.random() 是由系统时间生成的。但我找不到任何信息。如果那是真的,那么就有可能解决问题。因为我可以用系统时间编程,结果总是对应的。

最佳答案

您的问题与 google 身份 validator 实现具有相同的基础。大多数 RSA token 或 2factor 身份验证使用此方法对用户进行身份验证。正如评论中提到的使用普通种子来解决问题

关于Java - 我如何知道 Math.rand() 或 Random 将生成哪个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51034735/

相关文章:

java - 组件未添加到JPanel对象

java - 错误 : java. io.IOException : Type mismatch in key from map: expected org. apache.hadoop.io.Text,收到 org.apache.hadoop.io.LongWritable

arrays - 在大小为 N 的数组的每 k 个元素中查找最小和第二小的元素

java - 使用递归反向双链表

algorithm - 通过移位操作替换分支语句

java - Eclipse RCP 3.x 插件无法与 Eclipse 4.x 一起正常工作

java - JS 和 Spring 的麻烦

java - 从 Web 服务检索数据后 Android 数据绑定(bind)不更新 UI

python - 用python实现二进制搜索

java - A* 多智能体寻路