我试图从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#,它在统计上更准确.我已经制作了多次重复这些代码的项目,但我不确定它能给我看一些结果.
我想在列表列表中使用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(),但必须有更简单的方法.
提前致谢.
我希望标题和这个简单的例子说明一切.
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方法,它对我说好,它只是不改变标签.
我想找到更简单的方法在循环内编写循环.
以下是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) 我正在尝试创建一个简单的国际象棋程序,我在实现典当促销时遇到了一个小问题.我有一个抽象类和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].
我想知道是否有更好的方法来做到这一点.不知何故从"内部"改变对象的类.
c# ×4
casting ×1
chess ×1
class ×1
forms ×1
inheritance ×1
java ×1
list ×1
loops ×1
probability ×1
random ×1
statistics ×1