标签: non-uniform-distribution

Java:具有非均匀分布的随机整数

如何n在Java中创建一个随机整数,在"线性递减分布" 之间1和之间k,即1最有可能,2不太可能,3不太可能,......,k最不可能,并且概率线性下降,如下所示:

在此输入图像描述

我知道已经有关于这个主题的线程,我为制作一个新主题道歉,但我似乎无法从他们那里创造我需要的东西.我知道使用import java.util.*;代码

Random r=new Random();
int n=r.nextInt(k)+1;
Run Code Online (Sandbox Code Playgroud)

1and 之间创建一个随机整数k,均匀分布.

GENERALIZATION:任何提示创建任意分布的整数,即f(n)=some function,P(n)=f(n)/(f(1)+...+f(k))),也将受到赞赏,例如: 在此输入图像描述.

java random non-uniform-distribution

39
推荐指数
4
解决办法
9610
查看次数

有效的Java项目47:了解并使用您的库 - 有缺陷的随机整数方法示例

在Josh给出的有缺陷的随机方法的例子中,该方法产生具有给定上限的正随机数n,我不明白他陈述的两个缺陷.

书中的方法是:

private static final Random rnd = new Random();

//Common but deeply flawed
static int random(int n) {
    return Math.abs(rnd.nextInt()) % n;
}
Run Code Online (Sandbox Code Playgroud)
  • 他说,如果n是2的小幂,则生成的随机数序列将在短时间后重复出现.为什么会这样?对于文档Random.nextInt()说,Returns the next pseudorandom, uniformly distributed int value from this random number generator's sequence.所以它不应该是,如果n是小的整数,则顺序会重演,为什么这个只适用于2的幂?
  • 接下来他说,如果n不是2的幂,那么平均一些数字将比其他数字更频繁地返回.如果Random.nextInt()生成均匀分布的随机整数,为什么会发生这种情况?(他提供了一个代码片段,清楚地证明了这一点,但我不明白为什么会出现这种情况,以及这与n是2的权力有什么关系).

java random probability effective-java non-uniform-distribution

17
推荐指数
2
解决办法
1841
查看次数

用C#实现Box-Mueller随机数发生器

这个问题:随机数发生器将数字吸引到范围内的任何给定数字?我之前做过一些研究,因为我之前遇到过这样一个随机数发生器.我记得的只是"穆勒"的名字,所以我想我找到了,在这里:

我可以在其他语言中找到它的大量实现,但我似乎无法在C#中正确实现它.

例如,这个页面,用于生成高斯随机数的Box-Muller方法表示代码看起来应该是这样的(这不是C#):

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

double gaussian(void)
{
   static double v, fac;
   static int phase = 0;
   double S, Z, U1, U2, u;

   if (phase)
      Z = v * fac;
   else
   {
      do
      {
         U1 = (double)rand() / RAND_MAX;
         U2 = (double)rand() / RAND_MAX;

         u = 2. * U1 - 1.;
         v = 2. * U2 - 1.;
         S = u * u + v * v;
      } while …
Run Code Online (Sandbox Code Playgroud)

c# random non-uniform-distribution

9
推荐指数
1
解决办法
2万
查看次数

在matlab中非均匀网格上的3维傅里叶变换

我需要计算我有[x,y,z]坐标的结构的3D傅里叶变换.我想到内插到点之间最小间距的均匀网格并使用fft,但这在内存中变得不切实际,因此fft无法使用.来自我的[x,y,z]数据的样本是:

xyz=[ 23.1860   44.9710    5.9280
      25.5370   44.0090    4.9960
      24.5030   44.5890    6.2280
      20.0150   46.4080    7.9110
      24.9910   44.6760    7.5330
       4.8660   44.7120    8.6830
      36.7170   33.7440    6.5570
      11.1510   40.0590    5.8120
      29.2550   34.8750   10.0850
       5.4230   48.8200   12.7380
      38.2020   35.7590    1.3260 ];
Run Code Online (Sandbox Code Playgroud)

非常感谢您的建议

matlab fft non-uniform-distribution

6
推荐指数
2
解决办法
1777
查看次数

具有给定比例的随机非均匀分布

我有3个标签:"A","B","C".

我想生成一个包含100个元素的随机列表,其中60%是"A",30%是"B",10%是"C".

我怎样才能做到这一点?(我是python中的新手,希望这个问题不是太傻.)


编辑:我的问题与这个问题略有不同: 生成具有给定(数字)分布的随机数

就像在评论中一样,我希望它们中的60%都是"A",并非每个元素都有60%的概率为"A".所以numpy.random.choice()不是我的解决方案.

python non-uniform-distribution

6
推荐指数
2
解决办法
3147
查看次数

Haskell 数据类型的非均匀分布

随机包包含一个类型的类Uniform为均匀分布的类型。这适用于以下类型:

data Coin = Heads | Tails
Run Code Online (Sandbox Code Playgroud)

但是假设我想对一组具有非均匀分布的事物进行建模,例如通过添加硬币落在其一侧的可能性:

data Coin = Heads | Tails | Side
Run Code Online (Sandbox Code Playgroud)

现在我仍然可以Uniform在其实现中使用非均匀分布来实现,但这会欺骗Uniform.

我是否必须只使用一个独立的函数,或者是否有一些类型类用于“实际”分布的概念?

这个类型类在 RPG 的上下文中很有用,在那里你可以有一些类型

data Rarity = Common | Rare
data DropType = Club | Sword
Run Code Online (Sandbox Code Playgroud)

获得 aRare和它是 a的机会Sword可能低于其他值。但是从该类型的所有值的集合中提取值的概念仍然相同RarityDropType这就是为什么这对我来说看起来像是类型类的工作。

random haskell non-uniform-distribution

6
推荐指数
1
解决办法
94
查看次数

二维插值不规则网格fortran

如何在FORTRAN中实现二维插值,其中数据如下所示.x和y是两个坐标,z是取决于它们的值,x是均匀间隔的,但是y不是均匀间隔的,并且对应于x的均匀值的y的最大值保持增加.不会失去太多准确性 -

  • 基于给定的x和y获得z值的最简单方法是什么?
  • 基于给定的x和y获得z值的最快方法是什么?

谢谢SM

x    y    z
-----------
0   0     -
0   0.014 -
0   0.02  -

.....
....

0.1 0     -
0.1 0.02  -
0.1 0.03  - 

.......
.....

1.0  0     -
1.0  0.05  -
1.0  0.08  -

.......
.......
Run Code Online (Sandbox Code Playgroud)

interpolation non-uniform-distribution

4
推荐指数
2
解决办法
4811
查看次数

生成具有非均匀分布的随机整数数组

我想编写Java代码来生成范围[1,4]中的随机整数数组.数组的长度为N,在运行时提供.问题是范围[1,4]不均匀分布:

在此输入图像描述

这意味着如果我创建N = 100的数组,数字'1'将在数组中平均出现40次,数字'2'出现10次,依此类推.

现在我使用此代码生成范围[1,4]中的均匀分布的随机数:

public static void main(String[] args)
    {
        int N;
        System.out.println();
        System.out.print("Enter an integer number: ");
        N = input.nextInt();
        int[] a = new int[N];
        Random generator = new Random();
        for(int i = 0; i < a.length; i++)
        {
            a[i] = generator.nextInt(4)+1;
        }
    }
Run Code Online (Sandbox Code Playgroud)

如何使用非均匀分布实现它,如上图所示?

java arrays random non-uniform-distribution probability-density

1
推荐指数
1
解决办法
2318
查看次数

与C ++中的numpy.random.choice等效的功能

我需要您的帮助来解决以下问题:

c ++ / opencv中是否有一个等效于以下代码的函数:

np.random.choice(len(vec), samples, p=probabilities[:,0], replace=True)
Run Code Online (Sandbox Code Playgroud)

提前致谢。

c++ opencv non-uniform-distribution c++11

1
推荐指数
2
解决办法
2016
查看次数