灰色空间

导航

随机数概率解决思路

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");

 

 

posted on 2009-02-05 16:12  小桐  阅读(2282)  评论(0编辑  收藏  举报