这是我要解决的算法问题(用韩语写。):https://www.acmicpc.net/problem/10944
如果我简单地解决问题,则需要生成一个介于1到10,000之间的数字。结果数必须与服务器(裁判)生成的随机数相同
这可能吗?我可以猜出系统服务器将生成什么,并且可以将其与程序的结果相匹配吗?
我发现用Java生成随机数有两种方法。
我可以使用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参数相同,因此显示相同的结果。我尝试使用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()是由系统时间生成的。但是我找不到任何信息。如果是这样,则有可能解决问题。因为我可以使用系统时间进行编程,所以结果将始终保持一致。
答案 0 :(得分:0)
您的问题与Google身份验证器实施的依据相同。大多数RSA令牌或2factor身份验证都使用此方法对用户进行身份验证。如评论中所述,使用通用种子来解决问题