问题如下:
a 出现概率 %10
b 出现概率 %15
c 出现概率 %10
d 出现概率 30%
如何用一个算法,求出来。
就像砸金蛋似的,随机产生 a b c d 的一个!
如果用随机函数的话,a 和 c 不好区分,
如果用区间的话,但是我不知道怎么处理!希望高手帮忙!!!
a 出现概率 %10
b 出现概率 %15
c 出现概率 %10
d 出现概率 30%
如何用一个算法,求出来。
就像砸金蛋似的,随机产生 a b c d 的一个!
如果用随机函数的话,a 和 c 不好区分,
如果用区间的话,但是我不知道怎么处理!希望高手帮忙!!!
如果是1~10之間呢就為A,
11~20為C,
21~35為B,
36~65為D
protected int Flag
{
get
{
if (ViewState["Flag"] != null)
{
return int.Parse(ViewState["Flag"].ToString());
}
else
{
ViewState["Lid"] = 0;
return 0;
}
}
set
{
ViewState["Flag"] = value;
}
} protected void btn_ZaJinHua_Click(object sender, EventArgs e)
{
Random rd = new Random();
string Gailv = "a";
int i = 0;
if (Flag == 0)
{
i = rd.Next(1, 10000);
}
else
{
i = rd.Next(1, 66);
} if (i < 11)
{
Gailv = "a";
} else if (i > 10 && i < 21)
{
Gailv = "c";
} else if (i > 20 && i < 35)
{
Gailv = "b";
} else if (i > 36 && i < 66)
{
Gailv = "d";
} else if (i > 65 && i < 10000)
{
Gailv = "e";
Flag = 1;
}
ShowMessage(Gailv);
} protected void ShowMessage(string message)
{
Response.Write("<script>alert('" + message + "')</script>");
}
Code詳見7樓
int a[100];
for(i=0; i<=99; ++i) a[i]=i;
for(i=99; i>=1; --i) swap(a[i], a[rand()%i]);
public class Test
{
public static void Main ()
{
int a = 1;
int b = 2;
swap (ref a, ref b); }
public static void swap (ref int a, ref int b) {
int temp = a;
a = b;
b = temp;
} }
但是(a-d )和 e 的可能性是一样的,
都是随机出来的,
但是(a-d )和 e 的可能性是一样的,
都是随机出来的,只不过 e 是出来一次之后就不出来了,这个是要考虑的地方!