Java:RandomStringUtils随机种子

时间:2012-06-27 14:48:53

标签: java random apache-commons

我一直在使用RandomStringUtils生成随机ID以用作数据库密钥:

import org.apache.commons.lang.RandomStringUtils;
public class RandomStringTest {
    public static void main(final String[] args) {
        for (int i = 0; i <= 10; i++) {
            final String id = RandomStringUtils.random(8,
                    "0123456789abcdefghijklmnopqrstuvwxyz");
            System.out.println(id);
        }
    }
}

密钥空间足够大,

len("0123456789abcdefghijklmnopqrstuvwxyz")^8 = 2821109907456 ≃ 10^12

随机机制是否正确播种?我需要知道密钥在将其应用于生产之前已正确分发。

顺便说一下,测试代码在执行几次时没有显示重复,但这远非坚实的证据。

2 个答案:

答案 0 :(得分:4)

实施I found中没有提供种子,只有new Random()。但是有method你可以提供自己的随机来源

random(int count, int start, int end, 
        boolean letters, boolean numbers, 
        char[] chars, java.util.Random random)

答案 1 :(得分:0)

您不应使用随机生成器来生成唯一键。没有什么能保证独特性。为什么不使用UUID生成器或数据库序列?

为什么要让您的密钥正确分发?主键唯一重要的是它的独特性。种子对分布没有任何影响,AFAIK。