求一随机数的算法
我想生成1-100的随机数,但是要求这些数字的出现几率不同,数越小几率越大。最好有一个参数来说明几率变化的坡度。
结果1,2,1,4,3,1,2,6,2,3,9,10,1,2,8,3,2,5,1
其中
1出现5次
2出现5次
3出现2次
4出现1次
总的来说是数越大出现的几率就越小。
------解决方案--------------------private string getRandomInt(int count) {
Random random;
StringBuilder sb = new StringBuilder();
random=new Random(unchecked((int)DateTime.Now.Ticks));
for (int i = 0; i < count; i++)
{
int rnd = random.Next(1, 100);
int value = random.Next(1, 100 - rnd + 1);
sb.Append(value);
sb.Append( ", ");
}
return sb.ToString();
}
------解决方案--------------------private string getRandomInt(int count,int podu)
{
Random random;
StringBuilder sb = new StringBuilder();
random = new Random(unchecked((int)DateTime.Now.Ticks));
for (int i = 0; i < count; i++)
{
int value = 100;
for (int j = 0; j < podu; j++)
{
value = random.Next(1, value);
}
sb.Append(value);
sb.Append( ", ");
}
return sb.ToString();
}
这样怎么样,pudu调成5就比较好了,如果坡度调到10,全是1,看看