日期:2014-05-18 浏览次数:20989 次
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楼帅
------解决方案--------------------
这方法好,嘿嘿