2017-05-27 10 views
-1

ボタンをクリックしたときに乱数を生成しようとしています。しかし、私は時々同じ数字を得るでしょう。ボタンをクリックするとラベルも非表示になります。ボタンをクリックするとラベルが残らなくなります。私はプログラムを再起動/終了するまでもっとそして一度同じ番号を使用してからそれを防ぐにはどうすればよいImage乱数が1回以上生成されるのを防ぐ

private static Random rnd = new Random(); 
randomNumber = rnd.Next(0, 25); 

+3

乱数はランダムです。あなたが乱数を5回尋ねると、5回繰り返すことは全く可能です。一度しか表示されないように制限している場合は、もはやランダムではありません。あなたは正確に何をしようとしていますか? –

+0

@ Ken-Whiteボタンをクリックすると、無作為にラベルを選択したい。私は、配列から乱数を生成することが可能であることを見て、以前に使用されたかどうかをチェックすることで、再度選択されるのを防ぎました。私はちょうどすべての方法でそれを行う方法を知らない。 – TitanBuilder1

+2

そして私が求めているのは、あなたが乱数にならないようにするために乱数を求めている理由です。 10人に1と10の間の番号を選ぶように求めるなら、2人以上が同じ番号を選ぶ可能性が非常に高い。それはランダムです。ランダムでないようにするには、配列にデータを取り込み、配列から選択して使用済みとしてマークし、使用できない番号を拒否しますが、乱数を呼び出さないでください。それらは一回使用に制限されている数字の範囲ですが、決して*ランダム*ではありません。 –

答えて

0

あなたが望むことができれば、生成される数字はランダムになるのをやめます。

したがって、重複を取りたいものは、選択した間隔の数字のリストを取り、それらをシャッフルしてから、一度に1つずつ取得する必要があります。

効率的な方法は、hereに記載されている方法です。これはFisher-Yates algorithmを使用して、ケース内で何がintになるかをシャッフルします。

関連する問題