C#中的随机序列发生器

时间:2017-07-29 14:55:28

标签: c# visual-studio mobile random

我想在c#中构建一个序列随机数移动应用程序。我想从两个不同的文本框中检索区间中的最小和最大数字,然后单击生成按钮以在新文本框中显示所有数字的随机序列。

我的代码只显示一个数字。怎么了?

感谢。

 public sealed partial class MainPage : Page
{
    public MainPage()
    {
       this.InitializeComponent();           
    }
   private void button_Click(object sender, RoutedEventArgs e)
    {
        int seed = 345;
        var result = "";
        int min = Convert.ToInt32(textBox.Text);
        int max = Convert.ToInt32(textBox2.Text);
       Random r3 = new Random(seed);
        for (int i = min; i < max; i++)
        {
            ecran.Text = (/*"," + r3.Next(min, max)*/i).ToString();
        }
    }

2 个答案:

答案 0 :(得分:4)

澄清您的解决方案出了什么问题:

在循环内部,你不断重新分配ecran.Text的值。

1st loop cycle      > ecran.Text = ", " + 77
2nd loop cycle      > ecran.Text = ", " + 89

//Value of ecran.Text after 1st cycle is ", 77"
//Value of ecran.Text after 2nd cycle is ", 89"

每次迭代覆盖ecran.Text的值。

通过在等于ecran.Text += ", " + LOGIC

前面添加加号来修复

答案 1 :(得分:2)

这是因为您在循环中将序列值分配给int min = Convert.ToInt32(textBox.Text); int max = Convert.ToInt32(textBox2.Text); if (max < min) return; var sequence = Enumerable.Range(min, max-min+1).ToList(); Shuffle(sequence); ecran.Text = string.Join(",", sequence); 。相反,您应该创建序列的字符串表示,并在结尾处分配它。

使用此Q&amp; A中的Shuffle<T>方法:

if(editText1!!.getText().length  == 0 || editText2!!.getText().length  == 0 ){
            button1!!.setEnabled(false)
        }