2015-02-18 2 views
-1

Я даже не знаю, как это объяснить ... Я искал альго, но не повезло.Найти инкрементный х количество цифр в диапазоне

Мне нужна функция, которая вернет массив поэтапно больших чисел (не уверен, какая кривая) из двух чисел, которые я передавал бы как параметры.

Ex .:

$length = 20; 
get_numbers(1, 1000, $length); 
> 1, 2, 3, 5, 10, 20, 30, 50, 100, 200, 500... // let's say that these are 20 numbers that add up to 1000 

Любая идея, как я могу это сделать ..? Наверное, я недостаточно умен, чтобы понять это.

+0

Почему эти цифры конкретно и не например 1,2,3, ..., 20? – interjay

+0

Это просто пример, я просто хочу, чтобы числа поднимались постепенно, с довольно крутой кривой. – nbrogi

+0

Если вы не состоите в браке со значениями «круглого взгляда», похоже, вы можете использовать экспоненциальную кривую. Вы должны найти некоторое число X такое, что X^длина == 1000. Затем вы создадите список из [X^0, X^1, X^2 ... X^длины]. Однако я не уверен, как решить проблему X. – Kevin

ответ

1

Как насчет экспоненциальной кривой? Пример реализации Python:

begin = 1 
end = 1000 
diff = end - begin 
length = 10 
X = diff**(1.0/(length-1)) 
seq = [] 
for i in range(length): 
    seq.append(int(begin+X**i)) 
print seq 

(примечание:. ** оператор Python для потенцирования Другие языки могут или не могут использовать ^ вместо)

Результат:

[2, 3, 5, 10, 22, 47, 100, 216, 464, 999] 
+0

Спасибо, Кевин! Это выглядит красиво. Если я изменю 1.0, то что-то изменит кривую, я думаю ..? – nbrogi

+0

Да, он растянет или сквозит кривую. Например, замена 1.0 на 2.0 приведет к тому, что числа будут увеличиваться до 500 вместо 1000. И замена его на 0.333 приведет к увеличению числа до 3000 вместо 1000. – Kevin

+0

Спасибо, человек, оцените его. – nbrogi

Смежные вопросы