【问题标题】:C# Random Number Generator ErrorC# 随机数生成器错误
【发布时间】:2016-08-15 11:10:47
【问题描述】:

我是 C# 和随机数生成器的新手,但需要为我正在学习的课程编写一个模拟器。我的 for 循环和用户定义的变量有困难。我在 Visual Studio 中编码,需要用户从列表中选择一个数字(或将数字输入为文本),但程序将其读取为整数,而不是字符串,然后将此整数用作次生成随机数。

稍后我需要为这个随机数生成器分配一个概率分布,但现在我只需要运行这个东西!我收到一个错误,它无法将 int 转换为字符串(反之亦然,具体取决于我的编码方式)。以及我的局部变量 i 未分配的错误。我查看了类似生成器的其他代码,但我看不出我的 for 循环有什么不同。请帮忙!下面是表单空间 C# 代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GenerateProfile
{
    public partial class Form1 : Form
    {
        int N;
        public Form1()
        {
            InitializeComponent();
        }

        private void ChooseN_SelectedIndexChanged(object sender, EventArgs e)
        {

            N = ChooseN;
        }

        private void SBtn_Click(object sender, EventArgs e)
        {
            Random rnd = new Random();
            int num = rnd.Next(0, 100);
            pi.Text = num.ToString();
            for (int i; <= N; i++)
            {
                num = rnd.Next(0, 100);
                pi.Text = pi.Text + num.ToString();
            }
        }

        private void ClBtn_Click(object sender, EventArgs e)
        {
            Close();
        }
    }
}

【问题讨论】:

  • 您至少描述了三个错误。 给我们一个程序,清楚地演示其中一个并说出哪个。不要让试图帮助你的人不得不猜测你的问题是什么或你的代码是什么。制作一个完整的小例子,清楚地显示问题。错误信息有一个位置;告诉我们位置是什么。
  • for (int i; &lt;= N; i++) 什么小于或等于N?另外,ChooseN 是什么?它没有在任何地方定义(根据你的错误判断,它可能是一个字符串,而不是一个 int)
  • 在上面的程序中,您使用“ChooseN”而不说它是什么。这是什么?
  • 它在哪一行。我无法遵循您的代码,但是要将字符串更改为 int 您需要对其进行解析。有多种选择。 msdn.microsoft.com/en-us/library/bb397679(v=vs.110).aspx
  • 解决此问题后,有关如何修改随机数生成器生成的分布的简短教程,请参阅ericlippert.com/2012/02/21/generating-random-non-uniform-data

标签: c# random numbers generator simulator


【解决方案1】:

我自己想通了。我没有正确阅读 ChooseN。这解决了它。

    private void Gen_Click(object sender, EventArgs e)
    {

        MessageBox.Show("N=", this.txtN.Text);
        N = Convert.ToInt32(txtN.Text);
        Random rnd = new Random();
        int num = rnd.Next(-1, 1);
        pitxt.Text = num.ToString();
        int[] = { num };
        for (int i = 1; i <= N; i++)
        {
            num = rnd.Next(-1, 1);
            pitxt.Text = pitxt.Text + "," + num.ToString();
            int[] = { int[], num };
        }

【讨论】:

  • 哦,显然标记任何 pi 都会被 C# 搞砸
  • 您的代码很奇怪,无法编译。此外,您观察到pi 将与 C# 发生冲突是不正确的。 pi 不是保留字。但是,如果您想使用像 event 这样的保留字作为标识符,您可以在其前面加上 @
  • 使用pi作为标识符是完全合法的;就此而言,使用π 作为标识符是完全合法的。马丁是对的,这段代码是错误的。
  • 另外,尽量避免使用缩写词,并尽量避免使用“匈牙利前缀表示法”,例如以文本开头的 txt。根据事物的意思命名,使用驼峰式的完整词
  • @Sarah:“num”、“rnd”、“pitxt”、“txtN”、“Gen”和“ClBtn”不是投票理论中的数学术语。它们是缩写,因为有人不想输入“number”、“random”、“piText”、“textN”、“Generate”和“CloseButton”。 使用完整的单词根据含义命名事物
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多