簡體   English   中英

如何確定一個數字屬於哪個區間

[英]How to decide to which interval a number belongs

假設我有一輛車的前視野(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 = []

我怎樣才能解決這個問題?

非常感謝您的幫助

編輯:我試圖根據下面的答案改進我的代碼,如下所示:

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()
    while i % NUMBER_OF_SECTORS: # make sure that the state vector gets cleared after the same amount of iteration as its length
        sector = int(np.floor(random_number /(180/NUMBER_OF_SECTORS)))
        print(f"sector is {sector}")
        if sector <= NUMBER_OF_SECTORS:
            state_vector[sector] = 1
    print(state_vector)
    state_vector = []

但我在state_vector[sector] = 1 list assignment index out of range我知道肯定會有一些“愚蠢”的錯字但我找不到它,再次感謝您的幫助

對於相等的扇區,當角度為 integer 時,只需使用 integer 分割:

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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM