2013-03-25 90 views
1

數學很久以前,我不確定我想要什麼,也不知道如何計算它。想象一下,我知道我有從1到100的數字。我想給用戶一個選擇器/組合框,以便能夠選擇其中一些數字。但我不希望選取器中的所有數字。也許它顯示的數字1,2,3,4,5,10,15,25,40,60,80,90,100。用我的話說,它在一開始就慢慢地上升,然後變得更加陡峭。我認爲指數函數太陡。如何計算給定數字範圍內的某些點

最終我會喜歡它,如果有人能告訴我如何創建一個客觀的C方法,它接受兩個數字,返回和NSNumbers數組類似於我上面顯示的。

在此先感謝大家。

+0

嘗試線性函數,例如'f(x)= 2x' – SomeWittyUsername 2013-03-26 08:58:21

回答

1

Sequence of Triangular Number怎麼樣?

方程: X Ñ = N(N + 1)/ 2

序列(開始在n = 0):0,1,3,6,10,15, 21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,276,300,325, 496,528,561,...

輸入:1至100

最小值= 1,最大值= 100

1 + = 1

1 + = 2

2 + = 5

5 + = 11

11 + = 21

21 + = 36

36 + = 57

等..直到評價數超過最大值

序列: 1,2,5,11,21,36,57等等...

輸入:1000至10000

最小值= 1000,最大值= 10000

1000 + = 1000

1000 + = 1001

1001 + = 1004

1004 + = 1010

1010 + = 1020

1020 + = 1035

1035 + = 1056

等..直到評估數ex ceeds最大值

順序: 1000,1001,1004,1010,1020,1035,1056,等等...

我將離開執行部分,您可以嘗試一下。

+1

斐波那契是斐波那契的名字。 http://en.wikipedia.org/wiki/Fibonacci_number – 2013-03-25 19:59:02

+0

嗨,大家好。這真是太棒了,我從來沒有聽說過那個系列。但它仍然太陡,例如這是第一批0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584 ,4181,6765,10946,17711,28657,46368和75025.我想要一些不太快的東西。 – darbid 2013-03-26 06:03:03

+0

哦!好的。我想我爲你找到了合適的人選。我將在幾分鐘內對我的帖子進行編輯。 – 2013-03-26 08:39:43

0

我寫一些代碼來生成

-(NSArray *)generateNumbersFromBeginning:(int)begin toEnd:(int)end withCount:(int)count 
{ 
    NSMutableArray * genNumbers=[NSMutableArray new]; 

    double sqBegin=1.0; //our beginning generator 

    double sqEnd =sqrt((double)(end-begin)); // last element to produce 

    double step = (sqEnd-sqBegin)/((double)count);// 

    double power=1.0; 

    NSLog(@"%f %f %f",sqBegin,sqEnd,step); 

    for (int a= 0; a<count; a++) { 

     sqBegin+=step; 

     power += 1.0/(double)count; 

     int genNumber=(int)(pow(sqBegin, power)); 

     genNumber+=begin; 

     [genNumbers addObject:[NSNumber numberWithInt:genNumber]]; 

    } 

    NSLog(@"numbers are: %@ ",genNumbers); 

    return genNumbers; 


} 

的使用是([A,B],x),其中a爲開始點b爲終點,x是在該範圍內生成int的數。

如:

[self generateNumbersFromBeginning:9000 toEnd:10000 withCount:36]; 

這個調用的結果是:

numbers are: (
    9001, 
    9002, 
    9003, 
    9005, 
    9006, 
    9008, 
    9010, 
    9012, 
    9014, 
    9017, 
    9021, 
    9025, 
    9029, 
    9034, 
    9041, 
    9048, 
    9056, 
    9065, 
    9076, 
    9089, 
    9104, 
    9121, 
    9141, 
    9165, 
    9192, 
    9223, 
    9259, 
    9301, 
    9350, 
    9407, 
    9473, 
    9549, 
    9638, 
    9741, 
    9860, 
    9999 
) 
0

我不是100%肯定,你在找什麼,但你可以用一個簡單的公式,例如:

F(X)=地板(X ç)其中c> 1

您可以將c設置爲任意數字以提供所需的陡度。例如。對於c = 1.5,您將擁有:

0,1,2,5,8,11,14,18,22,37,31,36,41,46,52,58,64,70 ,76,82,89,96,103,110,117,125 ...

要調整爲不同的初始值,S,只是做F(X,S)=地板(X ç )+ s。


另一個可能的功能是由一系列緩慢增加陡度的線組成。例如,這裏是一個 「拋物線」 由線段的:

F(X,S)= 0.5cd(地板(X/d)) + 0.5cd(地板(X/d) )+ C(地板(X/d)+ 1)(在x mod d)+ S

其中c和d是您選擇(以及派生稍微刺激性的常數(≥ 1))。 c是初始線的斜率,d表示線段的長度。 s又是初始值。例如,讓s = 100,c = 3,d = 4,並且您有以下序列(對於x = 0,1,2,...):

100,103,106,109 ,112,118,124,130,136,145,154,163,172,184,196,208,220,232,247 ...

現在,如果我們想要「輪」數字,我們將設置c和s爲「圓」數字。但是,如果我們想開始用的人計算,我們可以定義是這樣的:

g(x) = x    when x = 0, 1, 2, 3, 4 
    = f(x - 5, 5) when x ≥ 5 

所以如果c = 5,d = 5,我們有這樣一個順序:

0,1, 1,2,3,4,5,10,15,20,25,30,40,50, 305,330,355,380,410,440,470,500,...


*當然,給定的最大值,鞠前停止當它返回一個大於期望的最大值的數字時,st停止評估函數。

相關問題