よろしくお願いします。
Posted: 2011年1月14日(金) 15:28
今卒論をやっています。
乱数を使うのですが制約条件のつけ方がわかりません。
2~44までの間の数字を選択するようにやろうと思っています。
ぜひよろしくお願いします。
乱数を使うのですが制約条件のつけ方がわかりません。
2~44までの間の数字を選択するようにやろうと思っています。
ぜひよろしくお願いします。
43の剰余では多分0,1だけほんの少し(1/762)頻度が高くなりますが、無視できるかどうかは使用者側で判断すればよいことです。softya(ソフト屋) さんが書きました:・43で割った余りを取る(精度的にはおすすめできません)。
・(dobule)乱数/RAND_MAX * 42
と言った方法があります。
#include <stdlib.h>
#include <assert.h>
#include <iostream>
int main()
{
int n[43] = {0};
srand(0);
for (int i = 0; i < RAND_MAX; ++i)
{
int index = (double)rand()/RAND_MAX * 42;
assert(index < 43);
++n[index];
}
for (int i = 0; i < sizeof(n)/sizeof(n[0]); ++i)
{
std::cout << "n[" << i << "] = " << n[i] << "\t";
if (i % 4 == 3)
{
std::cout << std::endl;
}
}
return 0;
}