这是我正在尝试解决的一个算法问题(它是用韩语写的(: https://www.acmicpc.net/problem/10944
如果我简单地翻译问题,我需要生成一个介于 1 到 10,000 之间的数字。结果数字必须与服务器(裁判(生成的随机数相同
这可能吗?我能猜到系统服务器会生成什么吗,我可以将其与程序的结果相匹配吗?
我发现在Java中有两种方法可以制作随机数。
- 随机
- Math.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));
}
}
它显示相同的结果,因为随机的参数相同。我尝试了随机。但我无法解决这个问题。
喜欢这个:
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身份验证器实现具有相同的基础。大多数 RSA 令牌或 2 因素身份验证都使用此方法对用户进行身份验证。如评论中所述,使用通用种子解决问题