如何将均匀分布(大多数随机数生成器产生,例如介于0.0和1.0之间)转换为正态分布?如果我想要选择的平均值和标准偏差怎么办?
Random.NextDouble()(一个从双[0.0,1.0的范围内))有时具有大的Int64相乘(让大的Int64 = 9000000000L),并且将结果地板以获得随机的Int64值比可以从随机获得较大.Next()(范围为[0,Int32.MaxValue)的Int32).
Random r = new Random();
long big = 9000000000L;
long answer = (long) (r.NextDouble() * big);
Run Code Online (Sandbox Code Playgroud)
在我看来,在[0.0,1.0]范围内Double的唯一值的总数提供了它可能生成的唯一Int64的数量的上限.事实上,一个松散的上限,因为许多不同的双打将映射到相同的Int64.
因此,我想知道:在[0.0,1.0]范围内,double的唯一值总数是多少?
如果你可以告诉我"大"可以采取的最大值是什么,以便"回答"可以是范围[0,大]的值,以及"回答"的值的分布是否均匀,假设Random.NextDouble()是统一的.
编辑:Double(double)在这里指的是IEEE 754浮点双精度,而Int64(long)和Int32(int)分别指64位和32位有符号2的补码.
灵感来自这个问题:在java中生成10位唯一随机数
虽然我使用C#,这个问题是语言无关,更多的是离散数学不是编程,但它困扰我不主要是从数学的好奇感,但是从想使用一个公式,只有当它做什么它一个程序员应该从安全角度来做.
language-agnostic random floating-point discrete-mathematics
我想通过向它们添加随机性来创建看起来更像手绘线的线条。我目前使用这个公式来修改坐标
x-10+Math.floor(Math.random()*20)
Run Code Online (Sandbox Code Playgroud)
这种随机分布是线性的,我想使用一些使它更有可能击中目标的东西。X根据看起来像但不一定是钟形曲线的东西。如何才能做到这一点?