0
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    private static Random randy = new Random();
    protected void Page_Load(object sender, EventArgs e)
    {
    }

    public void Button_Clicked(object sender, EventArgs e)
    {
        int count = 7;

        for (int i = 1; i < count; i++)
           // if (i == count)
        {
            int myInt = nextNo();

            string myNum = String.Format("{0}\t", myInt.ToString());
            TextBox1.Text += myNum;
            TextBox2.Text = ("These are your numbers fsdjio"); 
        }
    }

    int nextNo()
    {
        return randy.Next(1, 45);
    }
} 

强文本

问题是我经常会得到重复的数字。如果数字不相同,有没有办法让循环只进行?谢谢

我正在使用 for 循环和 Random 类来制作一个包含 6 个数字的彩票程序。但是,我经常会得到经常性的数字。我是否必须对其进行编码以便整个过程重复直到出现六个不同的数字?谢谢第一次发帖

4

2 回答 2

2

在我看来,你不应该再做整个循环。只需执行以下操作:

var set = new HashSet<int>();
for (int i = 0; i < n; i++)
{
    while(!set.Add(nextNo()));
}
于 2012-04-05T09:55:22.707 回答
1

您不需要随机的唯一数字。您需要对现有的一组数字进行洗牌。他们有很多关于SO谷歌关于这个主题的问题(和答案)。搜索Fisher yates shuffle算法并将其用于您的一组唯一数字。

于 2012-04-05T10:05:34.627 回答