|
> 1-16までの乱数を生成しているのですが、13だけを選択から除外したいのですが可能でしょうか?
得られた乱数が13だったら再挑戦すりゃええかと。
using System;
using System.Diagnostics;
class Program
{
static Random generator = new Random();
// 1以上16以下の乱数
static int rand()
{
return generator.Next(16) + 1;
}
static int valid_rand(Func<int, bool> valid)
{
int result;
// 条件を満たす値が得られるまで繰り返す
do
{
result = rand();
} while (!valid(result));
return result;
}
static void Main(string[] args)
{
for (int i = 0; i < 100; ++i)
{
int result = valid_rand(x => x != 13); // 与える条件:13でない
Debug.Assert(result != 13);
Debug.Assert(result >= 1 && result <= 16);
Console.Write("{0} ", result);
}
}
}
|