java - 将字符串值散列到区间 [0; 1]

标签 java scala

我需要将pk值(例如1289359345623p等)散列到区间[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/

相关文章:

java - 查找没有哈希码的对象

java - "invalid page number 1"使用 UCanAccess 连接到数据库时出错

java - 自动选择 JTable 中的每隔一行

java - 使用 Spring Boot Gradle 插件和 IntelliJ 设置环境变量

scala - 处理选项和两种类型-惯用的转换?

scala - 如何使用 Spark 计算累积和

java - 如何使用 CriteriaQuery 生成 "select count(*) ..."

scala - 在 sbt 项目的类路径中添加 tools.jar

scala - 返回来自 Actor 的 future 消息

scala - glClearColor 只显示黑屏