2012-02-18 76 views
0

我有整數從[0..255]的數組。重新映射的整數數組

我想修改數組,使仍然有256個數字,但數字從100開始並移動到255,這意味着許多整數將重複(即[100,100,101,101,102 ...])

有關我如何做到這一點的任何想法?對不起,我知道這可能是一個簡單的問題,但現在真的讓我難以置信......

謝謝!

注意:python,僞代碼或javascript提供的解決方案將會很好。 =)

+2

你是什麼意思**修改陣列y **:生成新的隨機數字?用新的隨機數替換舊的數字低於100?按升序生成新號碼? – sch 2012-02-18 01:08:03

+2

要用於填充新的陣列的標準是有點不清楚 – slezica 2012-02-18 01:09:29

+0

你想要哪個號碼重複?這些數字應該有什麼樣的模式? – 2012-02-18 05:02:51

回答

2

的Python:

RANGE_SIZE = 255-100 
for index in range(256): 
    array[index] = 100 + int(RANGE_SIZE * float(index)/255.0) 

健全性檢查:

  • 當索引= 0,陣列[索引] = 100 + 0 = 100
  • 當指數= 255,陣列[指數] = 100 +(255-100)= 255

這是線性插值。乘法和除法本質上將指數範圍轉換爲從0.0到1.0的線性斜坡。這是作爲一個規模適用於所需的值的範圍寬度,並添加到最小值。

+0

謝謝你的信息添加...我知道必須有這個術語,但我不知道那是什麼。 – 2012-02-18 01:17:29

+0

程序員需要學習數學的真正原因是,他們可以快速而準確地解釋這樣的問題。那麼,要麼或找出自己的算法。 – 2012-02-18 05:03:48

3

如果你確切地知道你想要的數字,爲什麼你需要修改一個現有的數組,爲什麼不只是使你想要的數組?實際的Python:

nums = [int(i*156.0/256+100) for i in range(256)] 
0

這裏有一種方法:

n = 256 
nf = float(n - 1) 
xs = range(n) 
(min, max) = (100, 255) 
[min + int(i/nf * (max - min)) for i in xs] 

給出:

[100,100,101,101,102,103,103,104,104,105,106, 106,107,107,108,109,109,110,110,111,112,112,113,113,114,115,115,116,117,117,118,118,119,120,120,121, 121,122,123,123,124,124,125,126,126,127,127,128,129,129,130,131,131,132,132,133,134,134,135,135,136, 137,137,138,138,139,140,140,141,141,142,143,143,144,144,145,146,146,147,148,148,149,1 49,150,151,151,152,152,153,154,154,155,155,156,157,157,158,158,159,160,160,161,162,162,163,163,164, 165,165,166,166,167,168,168,169,169,170,171,171,172,172,173,174,174,175,175,176,177,177,178,179,179, 180,180,181,182,182,183,183,184,185,185,186,186,187,188,188,189,189,190,191,191,192,193,193,194,194, 195,196,196,197,197,198,199,199,200,200,201,202,202,203,203,204,205,205,206,206,207,208,208,209,210, 210,211,211,212,213,213,214,214,215,216,216,217,217,218,219,219,220,220,221,222,222,223,224,224,225, 225,226,227,227,228,228,229,230,230,231,231,232,233,233,234,234,235,236,236,237,237,238,239,239,240, 241,242,242,243,244,244,245,245,246,247,247,248,248,249,250,250,251,251,252,253,253,254,255]