作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要将pk
值(例如1289359
、345623p
等)散列到区间[0; 1]。映射应该是确定性的,以便每次运行代码时都能获得相同的结果(我不想使用种子数)。例如,映射 1289359
的结果可能是 0.35
(仅是示例)。我该怎么做?任何提示将不胜感激。最好用 Scala 给出解决方案,但也可以用 Java 给出。
更新:
很抱歉没有发布我尝试作为可能的解决方案的代码示例:
String myString = "345623p";
double value = Double.parseDouble(myString);
我不知道如何将其映射到精确的区间 [0; 1].
最佳答案
你的要求很模糊,但我认为这可以满足他们。
val r = scala.util.Random
val pks = List("1289359", "345623p")
val hashes = pks.map { pk =>
r.setSeed(pk.hashCode())
(pk, r.nextDouble())
}
List((1289359,0.36724077736416283), (345623p,0.243112317891797))
请注意,这种方法会产生一些意想不到的结果。如果键非常接近(例如最后一个字符不同),那么由于 scala 的 Random.nextDouble 的工作方式,哈希值也将非常接近。 ojit_代码
关于java - 将字符串值散列到区间 [0; 1],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43633340/
我是一名优秀的程序员,十分优秀!