java中的随机数

S.P*_*IBA 1 java mysql

我使用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
Run Code Online (Sandbox Code Playgroud)

我使用随机数的概念生成了这些值.我想获得Service_types(打印机,计算,数据)在所有表中均匀分布的输出,反馈值为1,发生次数最多.

tra*_*god 5

该类java.util.Random可以生成具有合理均匀分布的伪随机数.鉴于List您的服务类型:

List<String> services = new ArrayList<String>(
    Arrays.asList("COMPUTER", "DATA", "PRINTER"));
Run Code Online (Sandbox Code Playgroud)

随机选择一个很容易:

String s = services.get(rnd.nextInt(services.size()));
Run Code Online (Sandbox Code Playgroud)

类似地,可以选择反馈值列表中的一个:

List<String> feedbacks = new ArrayList<String>(
    Arrays.asList("1", "0", "-1"));
String s = feedbacks.get(rnd.nextInt(feedbacks.size()));
Run Code Online (Sandbox Code Playgroud)

获得不同分布的一个简单方法是"堆叠甲板".例如,

Arrays.asList("1", "1", "1", "0", "0", "-1"));
Run Code Online (Sandbox Code Playgroud)

将产生1,0,和-1的概率1/2,1/31/6分别.您可以使用nextGaussian()适当的置信区间来安排更复杂的分区.

此方法仅应用于生成测试数据.

附录:Apache Commons数学指南包括一个关于数据生成的章节,其中包含有关其他概率分布的信息链接和文档.