2

私は自分が取り組んでいることに固執しています。私はさまざまなボタンを備えたWindowsフォームアプリケーションを持っており、各ボタンはさまざまなことを行うことになっています。今私の問題:

1つのボタンを押すと、乱数(たとえば、0〜1000)が生成され、プログラムにあるテキストボックスに番号が表示されます。私はボタンでこのコードを実行しようとしました:

private void button5_Click(object sender, EventArgs e)
{
    Random slumpGenerator = new Random(); int tal; 
    tal = slumpGenerator.Next(); 
}

ただし、残念ながら、テキストボックスに番号は表示されません。そして、それは私が数字が私のテキストボックスに表示されるべきだと言及していなかったからかもしれないと思います、何かアイデアはありますか?

4

5 に答える 5

6

確かに、テキストボックスにプロパティを設定していません。新しく生成された乱数を無視しています。次のようなものが必要になります。

Random slumpGenerator = new Random();
// Or whatever limits you want... Next() returns a double
int tal = slumpGenerator.Next(0, 100);
textBox.Text = tal.ToString();

Random一般に、多くのインスタンスを作成することは悪い考えですが、static変数にするほど単純ではないことに注意してください...詳細については、ランダム性に関する私の記事を参照してください。また、変数を宣言して単一のステートメントで値を割り当てるようにコードを変更した方法にも注意してください。これは、通常、1つのステートメントで宣言し、後で値を割り当てるよりも望ましい方法です。

于 2013-01-09T16:05:03.520 に答える
1
private void button5_Click(object sender, EventArgs e)
{
    Random slumpGenerator = new Random(); 
    int tal = slumpGenerator.Next(0, 1000); 
    txtBxName.Text = tal.ToString();
}
  1. 「Random」.Next()メソッドに最小値と最大値を追加する必要があります。
  2. テキストボックスのテキスト値をどこにも設定していません。
于 2013-01-09T16:05:58.150 に答える
1

暗号化サービスプロバイダーが提供する実装を使用して、暗号化乱数ジェネレーター(RNG)であるRNGCryptoServiceProvider スレッドセーフクラス(名前空間)を検討できます。System.Security.Cryptography

System.Random実装は、クラス を使用するよりも少し難しいです。

実装例は次のとおりです。

using System.Security.Cryptography;
...

private RNGCryptoServiceProvider rnd = new RNGCryptoServiceProvider();

private int NextInt32(int maxValue)
{
    byte[] intBytes = new byte[4];
    rnd.GetBytes(intBytes);
    return Math.Abs(BitConverter.ToInt32(intBytes, 0)) % maxValue + 1;
}

// And your method with textBox
private void button5_Click(object sender, EventArgs e)
{
    textBox.Text = NextInt32(1000).ToString(); 
}

RNGCryptoServiceProviderSOの質問で詳細を読むことができます: RNGCryptoServiceProviderの長所と短所

于 2013-01-09T16:15:24.237 に答える
1
                       **Random Number Generation in C#.Net**

コードを記述する前に 2 つの名前空間を追加する

*System.Security を使用。

System.Security.Cryptography を使用;*

コード:

次のコードをコピーしてボタン内に配置します

RNGCryptoServiceProvider xx = new RNGCryptoServiceProvider();
byte [] random_number=new  byte [512];
xx.GetBytes(random_number);
foreach (var i in random_number)
{
    textBox1.Text = i.ToString();
}

c#.net の詳細については、私のブログスポットを参照してください: mbthangamalai.blogspot.in

于 2014-03-30T16:08:40.860 に答える
1

コードにいくつか追加する必要があります。ここにあなたが望むものの完全なコードがあります...

private void button5_Click(object sender, EventArgs e)
{
    Random slumpGenerator = new Random(); int tal;
    tal = slumpGenerator.Next(0, 1000);
    textBox.Text = tal.ToString();
}

生成する最小値と最大値を設定する必要があります。また、実際に生成したい値よりも 1 低い最小値を設定する必要があります。つまり、10 から 20 の間の数値を生成する場合は、最小値を 9 に、最大値を 20 に設定する必要があります。

また、値を表示するには、値をテキストボックスなどに入れる必要があります。これは int であり、テキストボックスのテキストはフォーマットであるため、コードの最後にこれをString配置して に変換する必要があります。String.ToString()

この回答が遅れていることは承知していますが、後で役立つ可能性があります。

于 2014-01-16T00:46:23.137 に答える