//我写了一个,但是效果不好,效率也比较低 public static int RandomInt2(int minValue,int maxValue,double 系数) { int temp=new System.Random().Next(minValue,maxValue*100); double temp2=(maxValue*100)*系数; int ret=minValue; while(temp>temp2+1&&ret<maxValue) { ret++; temp2+=(maxValue*100-temp2)*系数; } return ret; }
随便找个数字曲线,用时间做种,很简单啊 ======= good 用数学的思路不错
//1~100出现的概率一样=1/100 int i=new System.Random(DataTime.Tips).Next(1,100) //以下表达式1的概率 1/100+1/100×1/2+…1/100×1/n…+1/100×1/99+1/100×1/100 // 2的概率 1/100×0+1/100×1/2+…1/100×1/n…+1/100×1/99+1/100×1/100 // n的概率 1/100×1/n+……+1/100×1/99+1/100×1/100 //这个应该满足你的要求 //总的来说是数越大出现的几率就越小。 int value=new System.Random(DataTime.Tips).Next(1,100-i+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();
}
xia yu 好方法
dilong_hcj(夏雨) 的方法很好,两次随机数就出来了,唯一缺点是调整“坡度”不是很方便。
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);
public static int RandomInt2(int minValue,int maxValue,double 系数)
{
int temp=new System.Random().Next(minValue,maxValue*100);
double temp2=(maxValue*100)*系数;
int ret=minValue;
while(temp>temp2+1&&ret<maxValue)
{
ret++;
temp2+=(maxValue*100-temp2)*系数;
}
return ret;
}
=======
good 用数学的思路不错
int i=new System.Random(DataTime.Tips).Next(1,100)
//以下表达式1的概率 1/100+1/100×1/2+…1/100×1/n…+1/100×1/99+1/100×1/100
// 2的概率 1/100×0+1/100×1/2+…1/100×1/n…+1/100×1/99+1/100×1/100
// n的概率 1/100×1/n+……+1/100×1/99+1/100×1/100
//这个应该满足你的要求
//总的来说是数越大出现的几率就越小。
int value=new System.Random(DataTime.Tips).Next(1,100-i+1)
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();
}
好方法
{ 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,看看
if(str.Length>2)
{
str.Substring(str.Length - 2, 2);
}
顶个