2012-02-18 73 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]