小编coz*_*zzy的帖子

随机数概率

我试图从4个数字中随机选择.我需要比较这两种算法的概率.

1#

                int a = random.Next(0, 4);

                if (a = 0)
                    statement1
                if (a = 1) 
                    statement2
                if (a = 2)
                    statement3
                if (a = 3) 
                    statement4
Run Code Online (Sandbox Code Playgroud)

2#

                int a = random.Next(0, 1000)

                if (a < 250)
                    statement1
                if (a >= 250 && a < 500) 
                    statement2
                if (a >= 500 && a < 750)
                    statement3
                if (a >= 750) 
                    statement4
Run Code Online (Sandbox Code Playgroud)

如果我认为它是相同的,我是对的吗?第一个代码中statement1的概率是1/4,第二个代码中的概率是250/1000,所以它也是1/4.但有人告诉我,当我使用更大范围的随机数时,如代码2#,它在统计上更准确.我已经制作了多次重复这些代码的项目,但我不确定它能给我看一些结果.

c# random statistics probability

5
推荐指数
1
解决办法
934
查看次数

List <List <int >> Remove()方法

我想在列表列表中使用Remove()方法,但它对我不起作用.
简单的例子应该说一切:

List<List<int>> list = new List<List<int>>();
list.Add(new List<int> { 0, 1, 2 });
list.Add(new List<int> { 1, 2 });
list.Add(new List<int> { 4 });
list.Add(new List<int> { 0, 1, });

list.Remove(new List<int> { 1, 2 });
Run Code Online (Sandbox Code Playgroud)

如果我使用RemoveAt(1)它工作正常但删除()没有.
显然,此代码返回false的原因相同:

List<int> l1 = new List<int>();
List<int> l2 = new List<int>();
l1.Add(1);
l2.Add(1);

bool b1 = l1 == l2; // returns False
bool b2 = l1.Equals(l2); // returns False too
Run Code Online (Sandbox Code Playgroud)

所以在我看来,我不能简单地比较两个列表甚至数组.我可以使用循环而不是Remove(),但必须有更简单的方法.

提前致谢.

c# list

4
推荐指数
2
解决办法
4380
查看次数

从另一个类访问表单组件

我希望标题和这个简单的例子说明一切.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    public void UpdateLabel(string str)
    {
        label1.Text = str;
       MessageBox.Show("Hello");
    }

    private void buttonIn_Click(object sender, EventArgs e)
    {
        UpdateLabel("inside");
    }

    private void buttonOut_Click(object sender, EventArgs e)
    {
        MyClass Outside = new MyClass();
        Outside.MyMethod();
    }
}

public class MyClass
{
    public void MyMethod()
    {
         Form1 MyForm1 = new Form1();
         MyForm1.UpdateLabel("outside");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我试图从MyClass更改lable1时,它什么也没做.但是我可以从外面看到UpdateLable方法,它对我说好,它只是不改变标签.

c# forms class

2
推荐指数
1
解决办法
3万
查看次数

循环内循环

我想找到更简单的方法在循环内编写循环.
以下是3个'for'循环的示例代码:

int level = 0;
int value = 0;
bool next = false;

for (int i0 = 0; i0 < 6; i0++)
{
    level = 0;
    value = i0;
    method();
    if (next)
    for (int i1 = 0; i1 < 6; i1++)
        {
            level = 1;
            value = i1;
            method();
            if (next)
            for (int i2 = 0; i2 < 6; i2++)
                {
                    level = 2;
                    value = i2;
                    method();
                    if (next)
                    {
                        //Do somethnig
                    }   
                }
        }
}



private void …
Run Code Online (Sandbox Code Playgroud)

c# loops

0
推荐指数
1
解决办法
335
查看次数

重建'this'变通方法

我正在尝试创建一个简单的国际象棋程序,我在实现典当促销时遇到了一个小问题.我有一个抽象类和6个类(King,Queen,Rook,Knight,Bishop和Pawn)扩展它.因此,当一个棋子到达棋盘的另一端时,我希望他改变让我们说皇后.

最简单的方法是做这样的事情:

Public class Pawn extends Piece {
...
  @Override
  public void move(int toCol, int toRow) {
    this.col = toCol; this.row = toRow;
    if (toRow == endRow)
      this = (Queen)this
  }
}
Run Code Online (Sandbox Code Playgroud)

这显然是不可能的,因为人们根本无法分配给.

所以我需要检测促销并从外部投射.但由于某些原因,我存储了两次配件.作为一个2D阵列的片断,但也作为每个玩家的2个片段列表.这意味着我需要在列表中找到pawn并将其删除,然后添加具有相同坐标的新queen并将其分配给board [col] [row].

我想知道是否有更好的方法来做到这一点.不知何故从"内部"改变对象的类.

java inheritance casting chess

0
推荐指数
1
解决办法
105
查看次数

标签 统计

c# ×4

casting ×1

chess ×1

class ×1

forms ×1

inheritance ×1

java ×1

list ×1

loops ×1

probability ×1

random ×1

statistics ×1