私はプログラミングが初めてで、C# でサイコロ ゲームを作成しようとしています。
プログラムはユーザーに面の数を尋ね、次に乱数でサイコロを振ります。
次の疑似コードがあります。
- 辺の数をユーザーに尋ねます。
- 最大範囲が面の数である乱数でサイコロを転がします。
- 出た数をユーザーに伝える
私の質問は、ユーザーが指定した範囲で乱数を生成してサイコロを振るにはどうすればよいですか?
このSystem.Random
クラスは、通常、カジュアルな乱数を生成するために使用されます。
渡された整数引数以上で厳密に小さいNext
ランダムな整数を生成する、呼び出されたメソッドのオーバーロードがあります。0
したがって、ユーザーがn
両面サイコロを選択し、インスタンスが の場合Random
r
、
r.Next(n) + 1
1
~の間のランダムな整数を生成しn
ます。
の 1 つのインスタンスを作成してRandom
再利用することをお勧めします。これは、複数のインスタンスを近接して作成すると、すべて同じ数値が生成されるためです。
Random random = new Random();
int randomNumber = random.Next(1, userInput);
ただし、知っておくべきことの1つは、ランダム関数は正確にランダムではなく、ランダムですが、毎回同じランダムな順序になっているということです.シードについては、お気に入りの検索エンジンを見てみましょう;)
public int RollDice(int iNoSides)
{
var rand = new Random();
return rand.Next(iNoSides) + 1
}
簡単なグーグル検索でrandom number c#
、多かれ少なかれこの正確なコードが得られます。
編集
他の回答やコメントから MSDN ドキュメントへのリンクがあります。プログラミングが初めてであることは知っていますが、学ぶための最善の方法は、何かを得るためにできる限り努力することです。心が機能しなくなった場合、スタックに質問を投稿することで、立ち往生している誰かを本当に助けていることを喜んでくれるでしょう。
編集2
@Rawling のコメントに従って、メソッドのオーバーロードが a をNext(n)
返す状態になっていることに気付きましたNon-negative number less than the specified maximum
。
System.Random、具体的にはSystem.Random.Next(Int32, Int32)から始める必要があります。
Random.Next(Int32, Int32)
Returns a random number within a specified range.
100 を含まない 0 から 100 までの Random 整数を取得するには:
Random random = new Random();
int randomNumber = random.Next(0, 100);