如何生成在图表中看起来真实的假数据
How to generate fake data that looks real in a graph
我想生成用于测试绘图库的假数据(在本例中是highcharts,但这并不重要)。例如,我想在每次点击时生成随机数据,看起来可能实际上是折线图中的真实数据。
这对我来说意味着简单的方法(X+1, rand())是行不通的。大多数情况下,它骗不了任何人。
有没有一种方法看起来像"真实数据",但可以反复生成,以产生看起来"真实"的不同形状?很抱歉我说得很含糊,这是一种"当我看到它时我就知道了"的事情。
我要找的是一个算法,而不是一个特定的语言实现。Ruby和/或javascript是我最可能使用的。
你可以像这里描述的那样使用中点位移
在这个算法中,你从几个随机的点开始,然后计算这些点之间的小高度偏移。
它通常用于电脑游戏中的2D地形生成。
像这样稍微有点噪音的行呢?
perl -e '$slope = rand()*3; print "$_, ", $slope*$_ + (rand() - .5)*$slope, "'n" foreach 0 .. 9;'
最简单的情况(即对于具有在视觉上可识别的趋势的图形),您应该
- 决定你的图形看起来像什么,即函数对于没有数据噪声的图。
- 决定您希望在数据中添加哪种类型的噪声(在外行中)随机性是什么样子的?也就是你的噪声模型(均匀,高斯等)。
- 对于每个随机(或故意选择的点),添加采样噪声从你的噪声模型到它。
。如果你希望你的曲线看起来像一条直线,你的函数是y = f(x) = mx + c,在间隔0 <= x <100(或任何您喜欢的间隔),您
-
先取m和c,直线的斜率和y轴截距。你当然可以从一个值范围中随机选择m和c。例如,如果你想要<= m
int m = a + (rand() % (b - a));
-
在x间隔中随机选择N个点,即调用rand() %在区间0 <= x <100 .
- 对于每一个x值,比如xi,你有一个对应的y值yi = f(xi)将xi代入直线方程。
-
现在使用噪声模型向yi添加噪声。此步骤特定于你选择的噪声模型。假设你在使用均匀噪声(最简单的)在-1到1的区间内(这是特定于您的选择)。你所需要做的就是再次调用
int noise = (rand() % 3) - 1;//-1到1之间的噪声。Rand()是均匀噪声的近似。
-
你的随机数据点是(xi, yi)
这里的很多东西都是可定制的。你当然可以
- 使用与行不同的函数,例如y = f(x) =sinx等。
- 使用不同的噪声模型,例如高斯模型来改变的"外观"
- 为x和噪声范围选择不同的间隔
- 为你的图形方程选择不同的参数。例如:在我们的例如,您可以选择m和c。
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 如何使用javascript将数据:image/png:base64.解码为真实图像
- 如何创建每秒更新真实数据的Hight Charts图表
- Breeze不会用其真实数据替换Ref:节点
- AngularJS / Karma 单元测试与真实的 XHR 数据 / passThrough()
- _.map() 在播放真实数据时不起作用
- 用真实数据修改道场图 x 轴
- 如何生成在图表中看起来真实的假数据
- 用星号代替javascript中的真实数据