【发布时间】:2020-10-02 17:49:14
【问题描述】:
场景
我已经实现了一个虚构的场景来更好地解释这个问题。我有 800 个银行账户,每个账户都投资了 100 美元,为期 1 年。每天,(使用随机函数)该值增加或减少 20%。因此,1 年后,如果我检查我的银行账户,大约 50% 的账户余额应该超过 100 美元。
问题
使用 javascript 内置随机函数,我得到了 12% 到 16% 的帐户,其中价值增加了,而在多次运行后价值减少了。
代码
let prices = [100, 100, 100, 100, 100, 100, 100, 100];
let days = 365;
let experiment_runs = 100;
let result = {
increased: 0,
decreased: 0
}
for (let e = 0; e < experiment_runs; e++) {
prices = [100, 100, 100, 100, 100, 100, 100, 100];
for (let i = 0; i < days; i++) {
for (let j = 0; j < prices.length; j++) {
// Change price by 20%
let delta = (Math.random() - 0.5) * 0.4 * prices[j];
// console.log("Delta", delta);
prices[j] += delta;
}
}
console.log(prices);
for (let p of prices) {
if (p > 100) {
result.increased++;
} else {
result.decreased++;
}
}
}
console.log(result);
输出
{increased: 107, decreased: 693}
这是 javascript 问题还是我的算法有问题?请提供您的意见。
【问题讨论】:
-
“20% 的机会变化”与“价格变化 20%”不同。
-
8 个帐户还是 800 个帐户?
标签: javascript algorithm random