2012-04-05 3 views
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); 
    } 
} 

starker TextRedoing Schleife, wenn ein Duplikat (Lotto-Programm C#)

Das Problem gefunden wird, ist, dass ich oft doppelte Nummern bekommen. Gibt es eine Möglichkeit, die Schleife nur weiterzuentwickeln, wenn die Zahlen nicht übereinstimmen? danke

Ich benutze eine for-Schleife und die Random-Klasse, um ein Lotterie-Programm mit 6 Zahlen zu machen. Allerdings werde ich oft wiederkehrende Nummern bekommen. Muss ich es so kodieren, dass der ganze Vorgang wiederholt wird, bis es sechs verschiedene Zahlen gibt? Danke Erstplakat hier

+1

Willkommen bei StackOverflow! Bitte nehmen Sie sich die Zeit, um Ihren Code zu formatieren, so dass es gut zu lesen ist. Sie können dafür den grauen "Bearbeiten" -Link unter Ihrer Frage verwenden. Dies wird Ihre Chancen auf eine gute Antwort erhöhen, und es ist ein Zeichen des Respekts gegenüber den Menschen, die Ihnen hier helfen. – Heinzi

+1

Ich denke, das ist Hausaufgaben. Wenn Sie Ihren Lehrer/Dozenten beeindrucken möchten, dann sollten Sie sich den Fisher-Yates-Algorithmus ansehen, der für diese Situation perfekt ist. Es ist auch ziemlich einfach zu implementieren. http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle –

Antwort

2

Meiner Meinung nach sollte man die ganze Schleife nicht nochmal machen. Gehen Sie wie folgt vor:

var set = new HashSet<int>(); 
for (int i = 0; i < n; i++) 
{ 
    while(!set.Add(nextNo())); 
} 
1

Sie benötigen keine zufälligen eindeutigen Zahlen. Sie müssen einen vorhandenen Zahlensatz mischen. Sie sind viele Fragen (und Antworten) auf SO und google zu diesem Thema. Machen Sie eine Suche nach dem fisher yates shuffle Algorithmus und verwenden Sie ihn auf Ihrem Satz von eindeutigen Zahlen.