我想生成虚假数据用于测试图形库(在这种情况下是高图,但这并不重要)。例如,我想在每次点击时生成随机数据,看起来它实际上可能是折线图中的真实数据。
这对我来说意味着只是一系列(X + 1,rand())的天真方法不起作用。大多数时候它都不会愚弄任何人。
是否存在看似“真实数据”的方法,但可以反复生成以产生看起来“真实”的不同形状。对于模糊不清,这有点像“当我看到它时我就知道了”。
我正在寻找的是算法,而不是特定的语言实现。不过,我最有可能使用Ruby和/或javascript。
答案 0 :(得分:3)
答案 1 :(得分:2)
像这样有点吵闹的线怎么样?
perl -e '$slope = rand()*3; print "$_, ", $slope*$_ + (rand() - .5)*$slope, "\n" foreach 0 .. 9;'
答案 2 :(得分:2)
最简单的情况(例如,对于在视觉上可识别的趋势的图表),您应该
E.g。如果你希望你的曲线看起来像一条直线,你的函数是y = f(x)= mx + c,具有均匀的噪声,在间隔0< = x< 100(或你喜欢的任何间隔),你
首先选择m和c,你的线的斜率和y截距。您当然可以从一系列值中随机选择m和c。例如。如果你想要< = m< b其中a,b是您选择的2个任意数字:
int m = a +(rand()%(b - a));
随机选择x区间内的N个点,即调用rand()% 在N <= x <1的区间内获得N个x值的100 N次。 100。
现在使用噪音模型为你的yi添加噪音。此步骤特定于 你选择的噪音模型。可以说你使用的是均匀的噪音 (最简单的)在-1到1的间隔内(这是特定于你的 选择)。您需要做的就是再次致电
int noise =(rand()%3) - 1; //介于-1到1之间的噪声.Rand()是均匀噪声的近似值。
yi = yi + noise;
您的随机数据点是(xi,yi)。
这里的很多东西都是可定制的。你当然可以
希望这有帮助。