我有一个字符串值,我想初始化一个随机类使用字符串作为种子?
这是可能的吗?如果是,怎么做?
字符串不仅包含ASCII。我可以用任何utf-8符号
您可以使用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
作为输入,某些种子可能比其他种子出现的概率更高。
您可以对ascii值或utf-8符号进行处理,将它们全部写成数字,然后将它们加在一起。或者,如果你需要,你可以选择一个更高级的"哈希函数"的例子,参见以下维基百科页面:http://en.wikipedia.org/wiki/List_of_hash_functions