2016-05-24 9 views
0

私は遅れたフィボナッチ生成器を実装しようとしていますが、廃棄戦略を使用しています。破棄戦略を使用した遅れたフィボナッチ生成器

ステップ1:あなたのRNG

ステップ2から生成された次の127個の数字から乱数を返します:私は従って、これらのガイドラインを持っているあなたのRNGから生成された次の997の番号を破棄

ステップ3:後藤ステップ1.

「int randomNumber = array [Next(127)];」セクションの範囲外の配列に関してエラーが発生することがあるという問題が発生することがあります。

初期値は:ここ

Random rand = new Random(); 
int[] array = new int[6000]; 
int j = 83; 
static int k = 258; 
int m = 2; 
int n = k; 
double randomNumber = 0; 

は廃棄メソッドのコードである:

public int NextUsingDiscarding(int maxValue) 
{ 
    try 
    { 
     int[] array = new int[127]; 
     for (int i = 0; i < array.Length - 1; i++) 
     { 
      array[i] = Next(maxValue); 
     } 

     int randomNumber = array[Next(127)]; 

     for (int i = 0; i < 127 + 997; i++) 
     { 
      Next(maxValue); 
     } 

     return randomNumber; 
    } 
    catch 
    { 
     return -1; 
    } 
} 

と数生成器:

public int Next(int maxValue) 
{ 
    for (int i = 0; i < array.Length; i++) 
    { 
     array[i] = rand.Next(maxValue); 
    } 

    int firstElement = array[n - j]; 
    int secondElement = array[n - k]; 

    randomNumber = (firstElement + secondElement) % Math.Pow(m, 32); 

    array[n] = (int)randomNumber; 

    return (int)randomNumber % (maxValue + 1); 
} 

答えて

0

Nextは0の値を返しますとmaxvalue、ここでは127と呼ばれています。しかし、あなたの配列は私が0と126の間のndices。

+0

あなたは何をすることをお勧めしますか? –

+0

真剣に? 0〜126の値が必要です。 'Next(n)'は、0と* n *の間の値を返します。 –

+0

申し訳ありませんが、私は長い間理解していました。しかし、それは動作します! –

関連する問題