[ASP.NET] 如何讓字機率性的出現?

Standard

在 PTT 的 Visual_Basic 板上看到的問題。希望能依照 A, B, C 三個項目設定的機率出現。
有點像廣告依權重出現,剛好最近在學習 ASP.NET,就來練習一下,若有更好的寫法歡迎討論哦。

第一種寫法:將項目出現的機率,直接產生於一字串中,最後再從該字串中隨機印出一個字元。

string str = new string(Convert.ToChar("A"), 33) + new string(Convert.ToChar("B"), 37) + new string(Convert.ToChar("C"), 30);

Random rnd = new Random();
Response.Write(str.Substring(rnd.Next(0, 99),1));

第二種寫法:參考廣告依權重露出的程式寫法。

Page_Load()

Random r = new Random();
for (int i = 1; i <= 20; i++)
{
    Response.Write(GetRnd(r));
}

protected string GetRnd(Random rnd)
{
  string[] ad = new string[3];
  ad[0] = "A";
  ad[1] = "B";
  ad[2] = "C";

  int[] impressions = new int[3];
  impressions[0] = 33;
  impressions[1] = 37;
  impressions[2] = 30;
  int total = 0;

  for (int i = 0; i < impressions.Length; i++)
  {
    total += impressions[i];
  }

  int rnd_num = rnd.Next(1, total);

  string final = "";

  total = 0;

  for (int i = 0; i < impressions.Length; i++)
  {
    total += impressions[i];

    if (rnd_num <= total)
    {
      final = ad[i];
      break;
    }
  }

  return final;
}

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *