当前位置: 首页 > 面试题库 >

随机数,分布不均匀

贺恩
2023-03-14
问题内容

我试图识别/创建一个函数(在Java中),该函数给我一个非均匀的分布式数字序列。如果我有一个函数说它function f(x), andx>0将给我一个从0到的随机数x

该函数最适合任何给定的函数x,下面仅是我想要的示例。

但是,如果我们说x=100函数f(x)返回来自分布式的s nonuni。

我想例如说

0 to 20 约占所有案件的20%。

21 to 50 大约是所有情况的50%。

51 to 70 约占所有案件的20%。

71 to 100大约是所有情况的10。

总之somting,给我一个数字,如正态分布,并在30-40偷看在这种情况下x100

http://en.wikipedia.org/wiki/Normal_distribution

(如果需要,我可以使用统一的随机gen作为得分,并且只有一个将从统一结果转换为非均匀结果的函数。)

编辑

我对此问题的最终解决方案是:

/**
 * Return a value from [0,1] and mean as 0.3, It give 10% of it is lower
 * then 0.1. 5% is higher then 0.8 and 30% is in rang 0.25 to 0.45
 *
 * @return
 */
public double nextMyGaussian() {
    double d = -1000;
    while (d < -1.5) {
        // RANDOMis Java's normal Random() class.
        // The nextGaussian is normal give a value from -5 to +5?
        d = RANDOM.nextGaussian() * 1.5;
    }
    if (d > 3.5d) {
        return 1;
    }
    return ((d + 1.5) / 5);
}

问题答案:

您能编写一个将多个随机数相加后得出1-X范围并取平均值的函数吗?随着n的增加,这将趋于正态分布

看到:

在C / C ++中遵循正态分布生成随机数

我入侵了以下内容:

class CrudeDistribution {

    final int TRIALS = 20;

    public int getAverageFromDistribution(int upperLimit) {
        return getAverageOfRandomTrials(TRIALS, upperLimit);
    }

    private int getAverageOfRandomTrials(int trials, int upperLimit) {
        double d = 0.0;
        for (int i=0; i<trials; i++) {
            d +=getRandom(upperLimit);
        }
        return (int) (d /= trials);
    }

    private int getRandom(int upperLimit) {
        return (int) (Math.random()*upperLimit)+1;
    }
}

Commons-Math中有一些库可以根据均值和标准差(用于衡量价差)生成分布。在链接中,一些算法可以做到这一点。

寻找相关的2班轮大概是一个有趣的小时:

https://commons.apache.org/math/userguide/distribution.html



 类似资料:
  • 问题内容: 我知道如果我使用Java的Random生成器,并使用nextInt生成数字,则数字将均匀分布。但是,如果我使用2个Random实例,并使用两个Random类生成数字,会发生什么。数字是否会均匀分布? 问题答案: 每个实例生成的数字将均匀分布,因此,如果将两个实例生成的随机数序列组合在一起,则它们也应均匀分布。 请注意,即使结果分布是均匀的,您也可能要注意种子,以避免两个生成器的输出之间

  • 本文向大家介绍python随机数分布random均匀分布实例,包括了python随机数分布random均匀分布实例的使用技巧和注意事项,需要的朋友参考一下 因为概率问题,所以需要测试一下python的随机数分布。到底是平均(均匀)分布,还是正态(高斯)分布。 测试代码如下: 测试结果: 结果说明: 平均(均匀)分布。 以上这篇python随机数分布random均匀分布实例就是小编分享给大家的全部内

  • 问题内容: 我有两种代码选择: 选项1 要么: 选项2 我了解这更惯用。我想知道的有效性。 在我将只使用由给定的种子产生的第一个号码。在“ 我选择一个种子”并使用该种子生成数字。IIUC在此用例上保证了随机性。 因此,我的问题是,如果我多次打电话,是否能保证产出分配的均匀性? 问题答案: 我真正的问题是选项1在数学上是否有效。 让我们从选项2开始。所使用的随机数生成器在javadoc中指定如下:

  • 我试图找到一种有效的算法来生成一个给定节点数的简单连通图。类似于:

  • 0.1-0.2:********** 0.2-0.3:******** 0.3-0.4:********* 0.5-0.6:********* 0.6-0.7:********* 0.7-0.8:********* 0.4-0.5:********* 0.5-0.6:********* 0.6-0.7:********* 0.1-0.2:********* 0.2-0.3:********* 0.

  • 问题内容: 我想要一个集合,并且其元素具有与之关联的概率,因此当我从集合中随机选择一个元素时,分布遵循与元素关联的概率。我想在一个非常小的Java应用程序中使用它,该应用程序存储了我要观看的电影列表,因此我可以向我推荐一部随机电影(否则我总是要花几个小时才能挑选一部电影)。对于每部电影,我都希望将向其推荐电影的次数与该电影的推荐次数成反比,该次数与从该列表中为下一个建议中挑选电影的可能性成反比。