我有一个String值,我想使用字符串作为种子初始化一个随机类?
是否可以这样做,如果是这样,怎么办?
该字符串不仅包含ASCII。我可以有任何utf-8符号。
答案 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