2016-12-19 4 views
0

誰も私は大学でコースをやっていて、特定の問題の解決策を見つけるのに苦労しています。私は開始時に乱数を生成するウィンドウとシーケンス(ボタンが押された時)を持っています。問題はシーケンス中に同じ5つの数字が表示され、5つの異なる数字が表示されるはずです。それらは単一の数字のように無作為に生成されます。乱数を表示しない

 using System; 
    using System.Threading.Tasks; 
    using System.Windows.Forms; 

     namespace RandomNumbers 
    { 
     public partial class frmRandomNumberGenerator : Form 
{ 
    private bool generate = true; 

    public frmRandomNumberGenerator() 
    { 
     InitializeComponent(); 
    } 

    private string GenerateNumber(int min, int max) 
    { 
     return new Random().Next(min, max).ToString(); 
    } 

    private void ToggleControls() 
    { 
     btnStart.Enabled = !generate; 
     tcRandomNumbers.Enabled = !generate; 
     txtRangeMin.Enabled = !generate; 
     txtRangeMax.Enabled = !generate; 
     btnStop.Enabled = generate; 
    } 

    private async void btnStart_Click(object sender, EventArgs e) 
    { 
     if(string.IsNullOrEmpty(txtRangeMin.Text) || string.IsNullOrEmpty(txtRangeMax.Text)) 
     { 
      MessageBox.Show("Invalid range!"); 
      return; 
     } 

     int min = 0; 
     int max = 0; 

     bool result = int.TryParse(txtRangeMin.Text, out min); 
     if (result) result = int.TryParse(txtRangeMax.Text, out max); 
     if (result) result = max > min; 

     if (!result) 
     { 
      MessageBox.Show("Invalid range!"); 
      return; 
     } 

     generate = true; 
     ToggleControls(); 

     while (true) 
     { 
      if (!generate) break; 
      if (tcRandomNumbers.SelectedIndex == 0) 
      { 
       lblSingleResult.Text = GenerateNumber(min, max); 
      } 
      else 
      { 
       lblSequenceFirst.Text = GenerateNumber(min, max); 
       lblSequenceSecond.Text = GenerateNumber(min, max); 
       lblSequenceThird.Text = GenerateNumber(min, max); 
       lblSequenceFourth.Text = GenerateNumber(min, max); 
       lblSequenceFifth.Text = GenerateNumber(min, max); 
      } 

      await Task.Delay(TimeSpan.FromSeconds(1)); 
     } 
    } 

    private void btnStop_Click(object sender, EventArgs e) 
    { 
     generate = false; 
     ToggleControls(); 
    } 
    } 
    } 

答えて

1

詳細については、リンク先の回答を参照してください。

変更:

private string GenerateNumber(int min, int max) 
{ 
    return new Random().Next(min, max).ToString(); 
} 

へ:

private Random rnd = new Random(); 

private string GenerateNumber(int min, int max) 
{ 
    return rnd.Next(min, max).ToString(); 
} 

また、 "最大" は可能な戻り値に含まれないことに注意してください。そのためには:

return rnd.Next(min, max + 1).ToString(); 
関連する問題