float[] f=new float[]{0.1.0.2,0.7}; Random r=new Random();......int RandomIndex()//返回0,1,2,表示f 数组的3种概率 {double dbRd=r.NextDouble(); int nIndex=0;//这个是结果 int i; double dbCur=0.0; for(i=0;i<f.Length;i++) { dbCur+=(double)(f[i]); if (dbRd<=dbCur) { return nIndex; } }return -1;//不会出现的, }
LZU问的是要随机取得这3个数中的一个还是要概率分别为这三个数的随机函数?
static void Main(string[] args) { List<int> t = new List<int>() { 1, 100, 1000000, 10, 5 }; var r = from o in t select new { name = o , rate = string.Format("{0:P2}", (o * 1.0 / t.Sum(p => p))) }; foreach (var o in r) { Console.WriteLine(o.ToString()); } }
Random r = new Random(); int a = r.Next(10); switch (a) { case 0: return 1; break;//概率为0.1 case 1: return 2; break;//0.2 case 2: return 2; break;//0.7 default: return 7; break; }
Random r=new Random();......int RandomIndex()//返回0,1,2,表示f 数组的3种概率
{double dbRd=r.NextDouble();
int nIndex=0;//这个是结果
int i;
double dbCur=0.0;
for(i=0;i<f.Length;i++)
{
dbCur+=(double)(f[i]);
if (dbRd<=dbCur)
{
return nIndex;
}
}return -1;//不会出现的,
}
{
List<int> t = new List<int>() { 1, 100, 1000000, 10, 5 };
var r = from o in t
select new
{
name = o
,
rate = string.Format("{0:P2}", (o * 1.0 / t.Sum(p => p)))
};
foreach (var o in r)
{
Console.WriteLine(o.ToString());
}
}
int a = r.Next(10);
switch (a)
{
case 0: return 1; break;//概率为0.1
case 1: return 2; break;//0.2
case 2: return 2; break;//0.7
default: return 7;
break;
}
这是.net 高级版本的语法吧? 2.0没通过