シードを固定した乱数
Posted feedbacks - D
D 2.031で。 Mt19937インスタンスは一種の無限リストで、frontメソッドで先頭要素を読み出し (除去はしない)、popFrontで除去します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import std.random;
static const uint COUNT = 16;
static const uint SEED = 1337;
static const uint NUM_TRIALS = 42;
void main()
{
uint[COUNT] randomNumbers;
Mt19937 gen; // 2^19937周期のMersenne Twister
// シードを設定し、COUNT個の乱数を憶えておく
gen.seed(SEED);
foreach (i; 0 .. COUNT) {
randomNumbers[i] = gen.front;
gen.popFront;
}
foreach (i; 0 .. NUM_TRIALS) {
// 同じシードを再設定し、出てくるCOUNT個の乱数が
// 最初のと同じであることを確認
gen.seed(SEED);
foreach (j; 0 .. COUNT) {
assert(randomNumbers[j] == gen.front);
gen.popFront;
}
}
}
|

ところてん
#9451()
Rating1/1=1.00
[ reply ]