实数从0到1转化为索引的最佳算法

2024-03-29 11:11:01 发布

您现在位置:Python中文网/ 问答频道 /正文

假设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

下面是python3代码,它的复杂性为O(N)。你知道吗

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


Tags: and代码in算法forindexreturnif
3条回答

把两个数字相乘,然后去掉小数位:

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

复杂性是O(1)

只需这样做:

import math

def index(x, n):
    return math.ceil(x*n)

我只想做以下几件事:

def index(x,n):
    return (10*x // n)

相关问题 更多 >