Random r = new Random(); int throw = r.next(0, 100); int val = 0; if (throw < 15) { val = r.next(0, 4); } else if (throw > 84) { val = r.next(7, 11) } else { val = r.next(4, 7); }
Random red = new Random(); Response.Write(red.Next(0, 360).ToString() + "<br>"); Response.Write(red.Next(0, 360).ToString() + "<br>"); Response.Write(red.Next(0, 360).ToString() + "<br>");http://msdn.microsoft.com/zh-cn/library/2dx6wyd4.aspx
多用几个随机 int a=rand(0,360) int c=rand(0,360) int b=rand(0,360) 取a b C 中最小的一个 一般两次随机就能够实现了 3次360就不好出现了
Random rd = new Random();int p = rd.Next(1, 10);result = rd.Next(0, 361 / p);Console.WriteLine(result);如果 P = 10 就随机 0-36 如果 p = 9 就随机 0-40 如果 p = 8 就随机 0-45 ..... 如果 p=1 就随机 0-360
说个蠢办法,建一个数组,把1-360按概率往里扔,之后用random给出数组下标。
Random ran = new Random(); int[] myarry =new int [10]; int n =0; for (int i = 0; i < myarry.Length; i++) { myarry[n] = ran.Next(0,360); n++; } Array.Sort(myarry ); foreach (int em in myarry) { Response.Write(em +"," ); }
int a=rand(1,360) int b=rand(1,360) 取a b 中最小的一个想了下 完全可以满足楼主的要求出现 360 360的概率是 1/(360*360) 出现 1的概率是 1/360 1出现的概率不就是360出现的概率的360倍吗
nnd 这是一个数学概率问题 楼主为什么要出个数学问题呢 我概率本来就不好 完了 脑子里纠结了
结贴 其实也就是一个数列求和问题n的概率是(361-n)/sum,求前n项的和
Random ran = new Random()int num = ran.Next(1,360)int getNum = ran.Next(1,num)
{
val = r.next(0, 4);
}
else if (throw > 84)
{
val = r.next(7, 11)
}
else
{
val = r.next(4, 7);
}
Random red = new Random();
Response.Write(red.Next(0, 360).ToString() + "<br>");
Response.Write(red.Next(0, 360).ToString() + "<br>");
Response.Write(red.Next(0, 360).ToString() + "<br>");http://msdn.microsoft.com/zh-cn/library/2dx6wyd4.aspx
int a=rand(0,360)
int c=rand(0,360)
int b=rand(0,360)
取a b C 中最小的一个
一般两次随机就能够实现了 3次360就不好出现了
这个要求出现概率跟数字本身有关系的,
比如,总数为1到360的和设为a,1出现的概率为360/a,360出现概率为1/a
比如,总数为1到360的和设为a,1出现的概率为360/a,360出现概率为1/a1 为360/a 360为 1/a
请问 2-359的概率为0?
比如,总数为1到360的和设为a,1出现的概率为360/a,360出现概率为1/asum=0+....+359;
int x=rand(0,sum)
x=x%360;
x=x+1;
大概思路是这样的 你看看怎么调整下x=0 的时候的情况
等差数列求合得到sum值rad(1,sum)就ok了,剩下的就是判定他在那个和值区间内
Random rd = new Random();int p = rd.Next(1, 10);result = rd.Next(0, 361 / p);Console.WriteLine(result);如果 P = 10 就随机 0-36
如果 p = 9 就随机 0-40
如果 p = 8 就随机 0-45
.....
如果 p=1 就随机 0-360
int[] myarry =new int [10];
int n =0;
for (int i = 0; i < myarry.Length; i++)
{
myarry[n] = ran.Next(0,360);
n++;
}
Array.Sort(myarry );
foreach (int em in myarry)
{
Response.Write(em +"," );
}
int b=rand(1,360)
取a b 中最小的一个想了下 完全可以满足楼主的要求出现 360 360的概率是 1/(360*360)
出现 1的概率是 1/360
1出现的概率不就是360出现的概率的360倍吗
完了 脑子里纠结了