是否可以使用String作为实例Random的种子?

时间:2014-06-01 15:56:51

标签: java android

我有一个String值,我想使用字符串作为种子初始化一个随机类?

是否可以这样做,如果是这样,怎么办?

该字符串不仅包含ASCII。我可以有任何utf-8符号。

2 个答案:

答案 0 :(得分:1)

您可以使用String.hashCode的实现,区别在于使用long代替int

static long stringToSeed(String s) {
    if (s == null) {
        return 0;
    }
    long hash = 0;
    for (char c : s.toCharArray()) {
        hash = 31L*hash + c;
    }
    return hash;
}

这样你得到long,但当然有不同的String可以生成相同的种子。根据您用作输入的String,某些种子的概率可能高于其他种子。

答案 1 :(得分:0)

您可以使用ascii值或utf-8符号执行某些操作,将它们全部写为数字,将它们一起添加。或者,如果需要,您可以选择更高级的“散列函数”作为示例,请参阅以下维基百科页面:http://en.wikipedia.org/wiki/List_of_hash_functions