因此,這裏的基本代碼:隨機呈現板20同樣出現
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
protected Random random;
public Form1()
{
InitializeComponent();
random = new Random();
}
private void Form1_Load(object sender, EventArgs e)
{ }
private void button1_Click(object sender, EventArgs e)
{
bool button1Clicked = true;
if (button1Clicked == true) { ITIpanel.Visible = true; }
}
private void ITIpanel_Paint(object sender, PaintEventArgs e)
{
ITItimer.Enabled = true;
}
private void ITItimer_Tick(object sender, EventArgs e)
{
double rand = random.NextDouble();
if (rand < .50d) { bluestimPanel.Visible = true; }
else if (rand > .5d) { redstimPanel.Visible = true; }
ITItimer.Enabled = false;
}
private void bluestimPanel_Paint(object sender, PaintEventArgs e)
{
Trialtimer.Enabled = true;
}
private void redstimPanel_Paint(object sender, PaintEventArgs e)
{
Trialtimer.Enabled = true;
}
private void Trialtimer_Tick(object sender, EventArgs e)
{
bluestimPanel.Visible = false;
redstimPanel.Visible = false;
Trialtimer.Enabled = false;
ITIpanel.Visible = true;
}
}
}
正如你所看到的,程序本身是相當簡單的。在ITItimer的勾號處,紅色或藍色面板隨機出現。我想對此進行修改,如果ITItimer總共打10次,紅色和藍色面板都會發生5次。
我一直在研究這一個星期左右,還沒有找到解決辦法。關於我如何最好地完成此任何想法?
我居然得到了以下工作:
double rand = random.NextDouble();
if (rand < .50d && blue < 5) { bluestimPanel.Visible = true; }
else if (blue == 5) { redstimPanel.Visible = true; }
if (rand > .5d && red < 5) { redstimPanel.Visible = true; }
else if (red == 5) { bluestimPanel.Visible = true; }
if (red >= 5 && blue >= 5) { panel1.Visible = true; }
這不正是世界上最漂亮的東西。但它完成了工作。
如果您的要求是,他們必須每個出現五次,那麼你不應該使用隨機數(至少不是完全)。雖然在統計上可能超過一個非常大的集合,其中一半將是紅色和一半藍色,但不能保證(特別是對於大多數即時隨機數生成器),當然不適用於這樣一個小樣本。 –
聽起來就像你想隨機化你的點擊事件中的一組結果,並隨着計時器滴答而從它們中拉出來?考慮一下10張牌,並應用洗牌算法。 –
@TetsujinnoOni就是這樣的。除了在這種情況下,假設您有兩種可能的試驗類型,並且一次會議由10次試驗組成。我想在這10個試驗中隨機地提出這兩種類型,這樣每個會話的開始和結束都是不同的。我對計算機編程相當陌生,所以任何幫助,將不勝感激。 – cwdaniels