rand() % a + b
は、aとbの両方を含むaとbの間の数値を返します。私はこれを誤解する必要があります。int r
のコードを実行すると2、3、または4が返されるためです。もちろん、2または3を返すことを期待しています。私はsrand(time(NULL));
をメインに呼び出しています。 #include <time.h>
と#include <stdlib.h>
私に何か不足していますか?rand()は1の数値が高すぎますか?
int r = (rand() % 3) + 2;
if (r ==2)
g_fan.draw(r); // skin == 2
else
g_fan.draw(1 + r); //skin == 4
'X%3'はセット(0,1,2)になっていますので、 (2,3,4) – apokryfos
これが['std :: uniform_int_distribution'](http://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution)がすばらしい理由です。 – NathanOliver
ありがとう、私はあなたがそれのようにそれを言うまで、これを得たことはありません。私はいつも 'rand()%100 + 1'の例を見てきましたが、常に' rand()%max + min = minとmaxの両方を含む 'と考えていました。私は今それを完全に得る。とても有難い。 –