0

配列を0から100までのランダムな200個の数値で埋めようとしています。最後のカップルの数が非常に奇妙であることを除いて、私はそれを移入します。

ここに私のコード。

     for (int i = 0; i < NUM_LIST_ELEMENTS; i++)
 {
    int  j = rand() % 100;

     list[i] = j;

 }

私の出力は次のようになります

元の配列:

41  67  34   0  69  24  78  58  62  64   5  45  81  27  61  91  95  42  27  36  91   4   2  53  92  82  21  16  18
95  47  26  71  38  69  12  67  99  35  94   3  11  22  33  73  64  41  11  53  68  47  44  62  57  37  59  23  41
29  78  16  35  90  42  88   6  40  42  64  48  46   5  90  29  70  50   6   1  93  48  29  23  84  54  56  40  66
76  31   8  44  39  26  23  37  38  18  82  29  41  33  15  39  58   4  30  77   6  73  86  21  45  24  72  70  29
77  73  97  12  86  90  61  36  55  67  55  74  31  52  50  50  41  24  66  30   7  91   7  37  57  87  53  83  45
 9   9  58  21  88  22  46   6  30  13  68   0  91  62  55  10  59  24  37  48  83  95  41   2  50  91  36  74  20
96  21  48  99  68  84  81  34  53  99  18  38   0  88  27  67  28  93  48  83   7  21  10  17  13  14-858993460

 9  16  35  51   0  49  19  56  98   3  24   8  44   9  89   2  95  85  93  43  23  87  14   3  48   0  58  18  80
96  98  81  89  98   9  57  72  22  38  92  38  79  90  57  58  91  15  88  56  11   2  34  72  55  28  46  62  86
75  33  69  42  44  16  81  98  22  51  21  99  57  76  92  89  75  12   0  10   3  69  61  88   1  89  55  23   2
85  82  85  88  26  17  57  32  32  69  54  21  89  76  29  68  92  25  55  34  49  41  12  45  60  18  53  39  23
79  96  87  29  49  37  66  49  93  95  97  16  86   5  88  82  55  34  14   1  16  71  86  63  13  55  85  53  12
 8  32  45  13  56  21  58  46  82  81  44  96  22  29  61  35  50  73  66  44  59  92  39  53  24  54  10  45  49
86  13  74  22  68  18  87   5  58  91   2  25  77  14  14  24  34  74  72  59  33  70  87  97  18  77-33686019

各配列の最後の数字が本当に奇妙であることに注意してください。これを回避するために私にできることはありますか?ところで、これは2つの異なる配列です。

投稿してくれたみんなありがとう!動作しました!

4

2 に答える 2

7

配列の終わりを超えて1つを読んでいます。

たとえば、配列に200個の要素を設定する場合は、0から200または1から200ではなく、0から199までの書き込みと読み取りを行う必要があります。

ちなみに、-rand()%100は、0から100までの数値を作成しません。0から99までの数値のみを作成します。

また、Randy Howardが言うように(ありがとう)、http://www.azillionmonkeys.com/qed/random.htmlのアドバイスに従うことで、よりランダムな生成を得ることができます。

于 2013-03-21T03:54:24.450 に答える
2

これは、結果を出力するコードに問題があることが原因である可能性があります。インデックス0から200までループしている可能性があります。これには201個のアイテムがあります。

私はあなたのアウトプットを数えました、そして最後の77-33686019が実際に2つの別々の数であるならば、201のアイテムがあることがわかりました。

そうでない場合は、コードのさらに下のどこかに、実際に他の値を出力するprintf/coutがある可能性があります。これを確認するにprintf ("\n");は、配列を出力するループの直後に試すことができます。負の数が別の行に表示される場合は、コードのさらに下にある他のprintfであることがわかります。

代わりに、0から100を取得するように使用int j = rand() % 101;することをお勧めします。元のコードでは、0から99までのランダムな範囲が提供されます。

于 2013-03-21T03:59:38.537 に答える