我使用java作为前端创建了下表,使用mysql作为后端。
mysql> select * from consumer9;
-------------
4 rows in set (0.13 sec)
Service_ID Service_Type consumer_feedback
100 computing -1
35 printer 0
73 computing -1
50 data 1
我使用随机数的概念生成了这些值。 我希望得到Service_types(打印机,计算,数据)在所有表中均匀分布的输出,反馈值为1,发生次数最多。
答案 0 :(得分:5)
类java.util.Random
可以生成具有合理均匀分布的伪随机数。给定List
您的服务类型:
List<String> services = new ArrayList<String>(
Arrays.asList("COMPUTER", "DATA", "PRINTER"));
随机选择一个很容易:
String s = services.get(rnd.nextInt(services.size()));
同样,可以选择一个反馈值列表之一:
List<String> feedbacks = new ArrayList<String>(
Arrays.asList("1", "0", "-1"));
String s = feedbacks.get(rnd.nextInt(feedbacks.size()));
获得不同分布的一个简单方法是“堆叠甲板”。例如,
Arrays.asList("1", "1", "1", "0", "0", "-1"));
将产生1,0和-1,概率 1 / 2 , 1 / 3 ,和 1 / 6 。您可以使用nextGaussian()
和合适的confidence interval安排更精细的分区。
此方法仅应用于生成测试数据。
附录:The Apache Commons Math Guide包括关于Data Generation的章节,其中包含有关其他概率分布的信息链接和文档。