python - 将0到1之间的实数转换为索引的最佳算法

标签 python python-3.x algorithm

假设x是0到1之间的实数

如果 n = 2,则有两个分数范围 0 到 0.5 和 0.5 到 1

如果 n = 3,则存在三个分数范围 0 到 0.33、0.33 到 0.66 和 0.66 到 1

我想知道判断 x 属于哪个分数的最有效算法。

如果 x = 0.2 且 n = 3,则 x 属于第一个分数,因此索引为 0

如果 x = 0.4 且 n = 3,则 x 属于第二小数,因此索引为 1

这是复杂度为 O(N) 的 python 3 代码。

def index(x, n):
  for i in range(0, n):
    if i/n <= x and x <= (i + 1)/n:
      return i

我想知道是否有更好的算法可能是恒定时间?

编辑:我之前没有明确说过,但是 0 和 1 都是 x 的合法值,当 x = 1 时结果应该是 n - 1

最佳答案

只需将两个数字相乘并去掉小数位:

def index(x, n):
    return int(x*n)

复杂度为 O(1)

关于python - 将0到1之间的实数转换为索引的最佳算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49282032/

相关文章:

python - 谁能解释一下 StandardScaler?

python - 仅使用标准库按另一列中分组值的一列累计总数对文本文件进行排序?

python - 使用两个数据帧的 Pandas bool 索引

javascript - 从 Javascript 中的对象数组重新创建对象

java - 高效地处理所有游戏图 block 更新?

python - 如何避免在 Bottle Python Web 框架中转义 html 字符?

Python SQLite3 获取原始数据?

python - 带有字母的 ASCII 艺术

python - 带有 Pandas 数据框的 CountVectorizer

arrays - 均衡圆形数组