随机数字怎么不重复出现 这是一个彩票系统,刚学这个一星期,新手,求高手解答

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

public partial class Default4 : System.Web.UI.Page
{

public static int[] hao;
public static int[] zi;

protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
TextBox3.Text = "";
TextBox4.Text = "";
TextBox5.Text = "";
hao = new int[5];
Label1.Text = "";
Random rr = new Random();
for (int i = 0; i < 5; i++)
{
hao[i] = rr.Next(1, 32);
// Label1.Text = Label1.Text + hao[i].ToString()+" ";
}

}
protected void Button2_Click(object sender, EventArgs e)
{
int k = 0;
zi = new int[5];
zi[0] = Convert.ToInt32(TextBox1.Text);
zi[1] = Convert.ToInt32(TextBox2.Text);
zi[2] = Convert.ToInt32(TextBox3.Text);
zi[3] = Convert.ToInt32(TextBox4.Text);
zi[4] = Convert.ToInt32(TextBox5.Text);
for (int j = 0; j < 5;j++ )
for (int i = 0; i < 5; i++)
{
if (zi[j] == hao[i])
k++;
continue;

}
if (k >= 5)
Label2.Text = "中了五百万!!";
else if (k == 4)
Label2.Text = "中了五百块!";
else if (k == 3)
Label2.Text = "中了五块";
else if (k == 2)
Label2.Text = "你得再给五块";
else
Label2.Text = "你得再给五百块";
}
protected void Button3_Click(object sender, EventArgs e)
{

for (int i = 0; i < 5; i++)
{
Label1.Text = Label1.Text + hao[i].ToString() + " ";
}
}
}

第1个回答  2010-10-29
可以先定义好数组,然后把顺序随机打乱,然后取出前面几个元素就可以了
或者比如你只要5个数,则把前面5位和数组里的元素随机交换,然后取出就可以了

如果用判断的方法,取出的数不多的情况下很不错的,但如果数一多,有进入死循环的可能
第2个回答  2010-10-29
你可以在随机数组产生的时候 去判断一下这个数字是否已经生成过了本回答被网友采纳
相似回答