随机数概率解决思路
C#中可以实现,也比较好维护,很方便修改,思路很简单,返回1-100之间的随机数,如果在60之间
那么就确定是60%概率中的分支,如果在60+25之间则执行概率25的分支……
//参数分别为3种概率所对应的100分数,本例中value=60,value2=25,value3=15
private int panduan(int value1,int value2,int value3 )
{
System.Random rm=new Random();
int result;
int rmvalue = rm.Next(1,101);
if (rmvalue<=value1)
{
result=1;
}
else if(rmvalue<=value1+value2)
{
result=2;
}
else
{
result=3;
}
return result;
}
//调用函数判断显示哪个
if (panduan(65,25,15)==1)
{
}
else if(panduan(65,25,15)==2)
{
}
else
{
}
1. 数字生成的概率相同, 学过离散数学的应该知道, 指定范围内的随机数中间的出现概率高,两头的低. 要想得到的数字的概率相同, 只需将范围扩大后取其中间的部分即可. 例如: 要0-6的随机数, 首先,生成0-54的随机数, 然后, 从生成的数字中取24-30之间的数字, 在减24. 这样一来, 所得到的随机数的每个数的概率基本相同.
2. 指定每个数字出现的概率. 这种实现也不难, 首先声明100个长度的数组, 将制定的数字按比例放到里面. 其次, 按1所说的方法生成0-99之间相同概率的数.然后将相应坐标里的数取出返回. 例如: 生成0-1的随机数(其中, 0出现的概率是30%,1是70%).
I) int a[10] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1};
II) int iIndex = GetSameRandam(0, 9);
III) return a[iIndex];
关机命令: System.Diagnostics.Process.Start("shutdown", "-f -s");