【发布时间】:2021-04-12 13:36:31
【问题描述】:
我正在尝试挑战自己;我的目标是创建和打印一个没有Math 或System 方法的随机数。
我已经有了一种不使用System.out.println() 打印到控制台的方法,但是我在寻找一种无需系统调用即可获得时间(System.currentTimeMillis()) 的方法时遇到了障碍。
我了解我需要将当前时间用作随机数生成的种子。
我不想使用任何数学或时间相关的导入
编辑:可能不应该问这个……这只是我的一个想法哈哈
【问题讨论】:
-
不过,你似乎在问我们。
-
java.time.Instant.now().toEpochMilli() -
尝试挑战自己是件好事,但我不确定为自己设置在现实生活中永远不会遇到的不必要的限制是否真的有用。您的问题有点像在汽车论坛上询问如何在不使用现有桥梁的情况下驾车穿越峡谷。
-
另请注意:我知道我需要将当前时间用作随机数生成的种子 ...确定你真的了解那部分?你看,系统时间可以从外部控制。使用系统时间是一个很好的起点,但不要相信这样做会给您带来真正的安全性。
-
这就是这里的重点:小心你在哪些方面投入精力。 不使用使用系统调用来获取系统时间...是一个非常无聊的练习。您要么使用其他一些库调用(最终可能只是在封面下调用相同的方法)......或者您需要编写 JNI 调用来从 java.util.Date 调用一些底层的本机 OS 函数。从学习的角度来看,这并不太有趣。学习如何做适当的安全,以及从哪里获得所需的熵......非常不同的故事。