gpt4 book ai didi

从长远来看,Java random 总是呈现负面趋势?

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:37 25 4
gpt4 key购买 nike

我正在构建一个应用程序,为此我有一个函数可以用测试数据填充它。概要:

        HashMap<String, Long> iIDs = new HashMap<String, Long>();
HashMap<String, Integer> vals = new HashMap<String, Integer>();

long iID1 = addIndicator("I1", "i1", Color.RED);
long iID2 = addIndicator("I2", "i2", Color.BLUE);
long iID3 = addIndicator("I3", "i3", Color.GREEN);
long iID4 = addIndicator("I4", "i4", Color.MAGENTA);

iIDs.put("iID1", iID1);
iIDs.put("iID2", iID2);
iIDs.put("iID3", iID3);
iIDs.put("iID4", iID4);

int v1 = 80;
int v2 = 30;
int v3 = 25;
int v4 = 40;

vals.put("v1", v1);
vals.put("v2", v2);
vals.put("v3", v3);
vals.put("v4", v4);

int numDays = 500;
int dateDistance = 14;

Calendar c = Calendar.getInstance();

for(int i=0;i<numDays;i++)
{
c.add(Calendar.DATE, dateDistance);
for(int j=1;j<5;j++)
{
int currVal = vals.get("v"+j);
int rand = new Random().nextInt(6);
int newVal;

if(rand <= 2) // 0, 1, 2
newVal = currVal + rand;
else // 3, 4, 5
newVal = currVal - rand;

pseudo: addPointForIndicator();
vals.put("v"+j, newVal);
}
}

无论我多久创建一次测试数据,图片看起来总是这样: Graph

所以随机数的趋势总是负的。这是为什么?

最佳答案

从您的逻辑中可以很清楚地看出它一定会造成负面趋势,甚至忽略了您对 Random 的使用不符合约定这一事实。您在一半时间添加 [0,2] 范围内的数字,在另一半时间减去 [3,5] 范围内的数字。不过,代码很容易修复:

if(rand <= 2) // 0, 1, 2
newVal = currVal + rand;
else // 3, 4, 5
newVal = currVal - rand + 3;

更干净的修复方法是

newVal = currVal + random.nextInt(7)-3;

这有一个额外的好处,它允许值有时保持不变,我认为这应该是模拟数据的更合适的方法。

关于从长远来看,Java random 总是呈现负面趋势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12528694/

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