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

強いテキストやり直しループ(宝くじプログラムのC#)

問題は、私は多くの場合、重複した番号を取得することです。数字が同じでない場合にのみループを進行させる方法はありますか?ありがとう

私はforループを使い、Randomクラスは6つの数字を使って宝くじプログラムを作っています。しかし、私は頻繁に繰り返し番号を取得します。 6つの異なる番号があるまでプロセス全体が繰り返されるようにコードを作成する必要がありますか?初めてのお礼ありがとうございます

+1

ようこそStackOverflow!読んでみるといいですよね。質問の下にある灰色の「編集」リンクを使用してください。これは良い答えを得る機会を増やし、ここであなたを助ける人々への敬意を表します。 – Heinzi

+1

これは宿題だと思います。あなたの教師/講師に感銘を与えたいなら、この状況に最適なFisher-Yatesアルゴリズムを見てみたいかもしれません。実装もかなり簡単です。 http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle –

答えて

2

私は、ループ全体をやり直すべきではないと思います。

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

ランダムなユニークな番号は必要ありません。あなたは既存の数字のセットをシャッフルする必要があります。彼らはSOgoogleにたくさんの質問(および回答)があります。 fisher yates shuffleアルゴリズムを検索し、固有の番号のセットで使用してください。

関連する問題