我目前正在实施一个秘密共享方案。(shamir)为了生成一些秘密共享,我需要在一个范围内生成一些随机数。为此,我有这个非常简单的代码:
val sharesPRG = SecureRandom()
fun generateShares(k :Int): List<Pair<BigDecimal,BigDecimal>> {
val xs = IntArray(k){ i -> sharesPRG.nextInt(5)}
return xs
}
我省略了实际创建共享作为坐标的部分,只是为了使其可复制,并选择了一个任意小的 5。我的问题是我当然需要这些共享是唯一的,拥有共享没有意义那是一样的。那么 Securerandom.nextint 是否有可能不返回它已经返回的值?当然,我可以在检查重复项时做一些逻辑,但我真的认为应该有更优雅的东西