Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何决定一个数字属于哪个区间_Python_Algorithm - Fatal编程技术网

Python 如何决定一个数字属于哪个区间

Python 如何决定一个数字属于哪个区间,python,algorithm,Python,Algorithm,假设我有一辆车,它的前视野(180度),我想把这180度分成几个间隔,比如30度。我有一组数字,我想决定这个数字属于哪个区间 我知道如何硬编码,但我如何能够自动编码,以便创建一个基于间隔数的算法 例如,如果180度被45度分割,那么这些间隔将是 (0-45)-指数0,(45-90)-指数1,(90-135)-指数2,(135-180)-指数3 这意味着我将有一个大小为4的向量(每个间隔一个元素) 如果我有数字,比如30和150,向量会是这样的:[1,0,0,1] 我怎样才能做到这一点 这就是我试

假设我有一辆车,它的前视野(180度),我想把这180度分成几个间隔,比如30度。我有一组数字,我想决定这个数字属于哪个区间

我知道如何硬编码,但我如何能够自动编码,以便创建一个基于间隔数的算法

例如,如果180度被45度分割,那么这些间隔将是 (0-45)-指数0,(45-90)-指数1,(90-135)-指数2,(135-180)-指数3 这意味着我将有一个大小为4的向量(每个间隔一个元素)

如果我有数字,比如30和150,向量会是这样的:[1,0,0,1]

我怎样才能做到这一点

这就是我试图做的:

NUMBER_OF_SECTORS = 6
sector_thresholds = []

for i in range(NUMBER_OF_SECTORS+1):
    sector_thresholds.append(180/NUMBER_OF_SECTORS * i)
print(sector_thresholds)

list_of_states = []
state_vector = [0] * (NUMBER_OF_SECTORS + 1)
for i in range(1000):
    random_number = 360*random.random() # If the number is larger than 180 then it should be ignored
    for j in range(NUMBER_OF_SECTORS):
        if j == 0:
            pass
        if sector_thresholds[j-1] <= random_number <= sector_thresholds[j]:
            state_vector[j] = random.choice([1,2]) #This shows an assignment error
    print(state_vector)
    state_vector = []
扇区数=6
扇区_阈值=[]
对于范围内的i(扇区数+1):
扇区阈值。追加(180个/u个扇区*i)
打印(扇区_阈值)
州列表=[]
状态向量=[0]*(扇区数+1)
对于范围(1000)内的i:
random_number=360*random.random()#如果该数字大于180,则应忽略该数字
对于范围内的j(扇区数):
如果j==0:
通过

如果相等扇区的扇区_阈值[j-1],则在角度为整数时使用整数除法:

sector = angle // sectorsize
或地板,如果角度为浮动

sector = int(angle / sectorsize)
例如:

import random
NUMBER_OF_SECTORS = 6
sector_size = 180 / NUMBER_OF_SECTORS

state_vector = [0] * (NUMBER_OF_SECTORS + 1)
for i in range(10):
    random_number = 360*random.random()
    sector = int(random_number / sector_size)
    print(f"sector is {sector}")
    if sector <= NUMBER_OF_SECTORS:
        state_vector[sector] = 1
print(state_vector)

>sector is 5
 ...
>[0, 0, 0, 1, 1, 1, 1]
随机导入
_扇区的数量=6
扇区大小=180/扇区数量
状态向量=[0]*(扇区数+1)
对于范围(10)内的i:
随机数=360*random.random()
扇区=整数(随机数/扇区大小)
打印(f“扇区为{sector}”)
如果扇区为5
...
>[0, 0, 0, 1, 1, 1, 1]

谢谢,这几乎解决了我的问题,有关详细信息,请参阅编辑。当我的问题完全解决后,我会接受你的问题,谢谢:)
import random
NUMBER_OF_SECTORS = 6
sector_size = 180 / NUMBER_OF_SECTORS

state_vector = [0] * (NUMBER_OF_SECTORS + 1)
for i in range(10):
    random_number = 360*random.random()
    sector = int(random_number / sector_size)
    print(f"sector is {sector}")
    if sector <= NUMBER_OF_SECTORS:
        state_vector[sector] = 1
print(state_vector)

>sector is 5
 ...
>[0, 0, 0, 1, 1, 1, 1]