[英]Best algorithm for converting real number between 0 and 1 to index
假设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属于第一个分数,因此index为0
如果x = 0.4且n = 3,则x属于第二个分数,因此index为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)
我只想做以下事情:
def index(x,n):
return (10*x // n)
只需这样做:
import math
def index(x, n):
return math.ceil(x*n)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.