日期:2014-05-18 浏览次数:21144 次
private int GetValue()
{
Random r = new Random();
int value = r.Next( 1, 10000 );
if ( value >= 1 && value <= 1333 )
return 1; // 13.33的概率是 1
else if ( value >= 1334 && value <= 2666 )
return 2; // 13.33的概率是 2
else if ( value >= 2667 && value <= 3999 )
return 3; // 13.33的概率是 3
else if ( value >= 4000 && value <= 5332 )
return 6; // 13.33的概率是 6
else if ( value >= 5333 && value <= 6665 )
return 7; // 13.33的概率是 7
else if ( value >= 6666 && value <= 7998 )
return 9; // 13.33的概率是 9
else if ( value >= 7999 && value <= 8665 )
return 4; // 6.6 的概率是 4
else if ( value >= 8666 && value <= 9332 )
return 5; // 6.6 的概率是 5
else
return 8; // 6.67 的概率是 8
}
------解决方案--------------------
public static void test2()
{
/*
在1~9之间产生30个随机数.
1,2,3,6,7,9的个数分别是4
4,5,8的个数分别是2
*/
//存放最后的结果
int[] number = new int[30];
//每个数字出现次数的限制
int[] limit = new int[10] { 0, 4, 4, 4, 2, 2, 4, 4, 2, 4 };
//记录每个数字已出现的次数
int[] count = new int[10];
for (int i = 0; i < count.Length; i++)
{
count[i] = 0;
}
Random r = new Random();
int index = 0;
while(index<30)
{
int n = r.Next(1, 10);
if (count[n] < limit[n])
{
count[n]++;
number[index++] = n;
}
}
for (int i = 0; i < 30; i++)
{
System.Console.Write(number[i] + " ");
}
}
------解决方案--------------------
up
------解决方案--------------------
二楼很不错!!!
------解决方案--------------------
2楼
------解决方案--------------------
4楼的方法是准确的
完全能达到楼主的要求
------解决方案--------------------
2楼的方法在有限的数据下够帅
------解决方案--------------------
顶2楼
------解决方案--------------------
不错
------解决方案--------------------
up
------解决方案--------------------
2楼帅
------解决方案--------------------
这方法好,嘿嘿