gpt4 book ai didi

java - 如何对以不同频率执行的突发事件进行编程?

转载 作者:行者123 更新时间:2023-11-30 06:53:51 26 4
gpt4 key购买 nike

假设我有 3 个案例需要执行,但并非总是如此。

例如

Case 1 --> happens always
Case 2 --> happens 20% of times
Case 3 --> happens 60% of times

我怎样才能开始编程呢?到目前为止,这是我的想法:

x = nextInt(100);
execute case 1
if( x <= 20 ){
execute case 2
}
if ( x <= 60 ){
execute case 3
}

是否有解决此问题的不同方法?也许一些我不知道的功能? Java 随机文档似乎没有这方面的内容。

最佳答案

您可以使用 apache 的数学库。

https://commons.apache.org/proper/commons-math/apidocs/org/apache/commons/math3/distribution/EnumeratedDistribution.html

<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.6.1</version>
</dependency>

也许有点矫枉过正

List<Pair<Boolean,Double>> list = new ArrayList<Pair<Boolean,Double>>();
list.add(new ImmutablePair(true, 0.2));
list.add(new ImmutablePair(false, 0.8));

EnumeratedDistribution e = new EnumeratedDistribution(list);

//execute case 1

if (e.sample()) {
//execute case 2
}
...

但是如果你的逻辑改变你可以有这样的事情:

List<Pair<String,Double>> list = new ArrayList<Pair<String,Double>>();
list.add(new ImmutablePair("name_1", 0.2));
list.add(new ImmutablePair("name_2", 0.4));
list.add(new ImmutablePair("name_3", 0.4));
EnumeratedDistribution e = new EnumeratedDistribution(list);

switch(e.sample()) {
case "name_1" :
...
break;
case "name_2" :
...
break;
case "name_3" :
...
break;
}

其中只有一个案例被执行,每个案例都有不同的执行概率。它非常灵活。

关于java - 如何对以不同频率执行的突发事件进行编程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37024166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com