ここで行っているよりも、ビットサイズの選択と疑似ランダムバイナリビットの生成を行うためのより洗練された方法はありますか?実際には、生成されたランダムバイナリビットのビットサイズ(最大16ビット)をユーザーが制御できるアルゴリズムを作成する必要があります。これは私が書いた関数ですが、これが最小/最もエレガントかどうかはわかりません。これは科学的なものであるため、効率はそれほど重要ではありませんが、コードの優雅さとわかりやすさは重要です。それで、同じことをするより効率的でエレガントな方法はありますか?
static string randomBit() {
int bitSize = 0, input = 0;
Console.Write("Input Bit Size (Maximum is 16 Bit): ");
input = Convert.ToInt32(Console.ReadLine());
Random choice = new Random();
if(input == 0 || input > 16) {
bitSize = 0;
}
else if(input == 1) {
bitSize = 1;
}
else if(input == 2) {
int randomChoice = choice.Next(2, 3);
bitSize = randomChoice;
}
else if(input == 3) {
int randomChoice = choice.Next(4, 7);
bitSize = randomChoice;
}
else if(input == 4) {
int randomChoice = choice.Next(8, 15);
bitSize = randomChoice;
}
else if(input == 5) {
int randomChoice = choice.Next(16, 31);
bitSize = randomChoice;
}
else if(input == 6) {
int randomChoice = choice.Next(32, 63);
bitSize = randomChoice;
}
else if(input == 7) {
int randomChoice = choice.Next(64, 127);
bitSize = randomChoice;
}
else if(input == 8) {
int randomChoice = choice.Next(128, 255);
bitSize = randomChoice;
}
else if(input == 9) {
int randomChoice = choice.Next(256, 511);
bitSize = randomChoice;
}
else if(input == 10) {
int randomChoice = choice.Next(512, 1023);
bitSize = randomChoice;
}
else if(input == 11) {
int randomChoice = choice.Next(1024, 2047);
bitSize = randomChoice;
}
else if(input == 12) {
int randomChoice = choice.Next(2047, 4095);
bitSize = randomChoice;
}
else if(input == 13) {
int randomChoice = choice.Next(4096, 8191);
bitSize = randomChoice;
}
else if(input == 14) {
int randomChoice = choice.Next(8192, 16383);
bitSize = randomChoice;
}
else if(input == 15) {
int randomChoice = choice.Next(16384, 32767);
bitSize = randomChoice;
}
else if(input == 16) {
int randomChoice = choice.Next(32768, 65535);
bitSize = randomChoice;
}
string binary = Convert.ToString(bitSize, 2);
return binary;
}
また、2番目の質問として、コードがビットサイズを要求しているときにEnterキーを2回押すと、例外エラーが返されます。同じことを回避する方法はありますか?