生成几率可配置的随机数
2014-05-20 15:43
183 查看
从 1-10 中产生若干个随机数,要求每个数字出现的几率可配置。
解决方案:将 1-100 分成 10 段(段的大小可以为 0)。每生成一个 1-100 之间的随机数,就看它落在哪一段。如果是第一段,那么取随机结果为 1,依此类推。这样的话,段的宽度越大,随机数对应该段的几率就越大。下面是代码:
解决方案:将 1-100 分成 10 段(段的大小可以为 0)。每生成一个 1-100 之间的随机数,就看它落在哪一段。如果是第一段,那么取随机结果为 1,依此类推。这样的话,段的宽度越大,随机数对应该段的几率就越大。下面是代码:
public class ConfigurableRandom { // 根据指定的几率生成 500 个随机数 public static void main(String[] args) { // 数字 1-10 产生的几率分配。加起来应该等于 100 int[] possibilities = {2, 18, 5, 5, 5, 25, 10, 0, 20, 10}; // 分段 int[] splitters = new int[11]; for (int i = 0; i < possibilities.length; i++) { splitters[i + 1] = splitters[i] + possibilities[i]; } System.out.println("分段:" + Arrays.toString(splitters)); // 生成随机数并统计生成次数 int[] counter = new int[10]; Random r = new Random(); for (int i = 0; i < 500; i++) { int d = (int) (r.nextDouble() * 100) + 1; for (int j = 0; j < splitters.length - 1; j++) { if (d > splitters[j] && d <= splitters[j + 1]) { System.out.printf("%3d", j + 1); counter[j]++; break; } } if ((i + 1) % 25 == 0) { System.out.println(); } } System.out.println("/n1~10出现次数统计:" + Arrays.toString(counter)); } }
相关文章推荐
- 生成几率可配置的随机数
- 生成指定长度随机数
- 【功能-java-函数】生成随机数的函数(返回字节)
- shell生成随机数的几种方法
- LOG4J 在日期的前提下生成多个大小一致的日志(同一天生成多个日志,日志大小可配置)
- JAVA中生成随机数
- 生成k个不同的随机数,从m到n,并输出最大值的程序代码
- 使用boost库生成 随机数 随机字符串
- C#生成随机数
- Java如何每5秒生成一个随机数
- 关于C#中随机数的生成问题
- 生成两位随机数
- 生成随机数源代码-C++
- C/C++随机数生成 rand() srand()
- 生成10个0-100间的随机数
- 随机数的生成方法
- java 不重复随机数生成
- 随机数的生成:给定1-n的随机数生成器randn(),生成1-m的随机数
- 关于C++随机数生成中种子值设置的…
- 生成一定范围的随机数