注意:为简洁起见,以下内容无法区分随机性和伪随机性.此外,在此上下文中,约束意味着给定的最小值和最大值之间)
本System.Random类提供随机生成整数,双打和字节数组.使用Random.Next,可以轻松生成类型为布尔值,字符,(S)字节,(U)Int16,(U)Int32的随机约束值.使用时Random.NextDouble(),可以类似地生成Double和Single类型的约束值(就我对此类型的理解而言).随机串生成(给定长度和字母的)已经 也 被 解决 之前.
考虑剩余的原始数据类型(不包括Object):Decimal和(U)Int64.他们的随机生成也已被解决(Decimal,(U)Int64使用Random.NextBytes()),但不受限制.理论上可以使用拒绝采样(即循环直到生成的值是所需范围),但这显然不是一个实际的解决方案.归一化NextDouble()不起作用,因为它没有足够的有效数字.
简而言之,我要求正确实现以下功能:
long NextLong(long min, long max)
long NextDecimal(decimal min, decimal max)
Run Code Online (Sandbox Code Playgroud)
请注意,由于System.DateTime基于ulong,第一个函数也允许随机约束生成此类结构(类似于此处,仅在刻度而不是分钟内).
所以我需要根据用户设置的参数生成随机数,并制作一个基本的数学表达式.他们有3个选择; 单数,双数或三位数.所以基于此我需要生成0到9,0到99和0到100的随机数.
到目前为止,我已经阅读了关于Random课程的内容.这是我的不良尝试:
Random rnd = new Random();
int value = 0;
if (digits == 1)
{
rnd.Next(value);
q1Lbl.Text = value.ToString();
}
Run Code Online (Sandbox Code Playgroud) 我想不出一个好方法,如果可能的话,我会感激一些帮助!
我担心我没有任何代码可以发布,因为我没有那么远.
我需要从0-999范围内的3个(或可能更多)参数生成一系列值.
对于给定的输入,该值必须始终相同,但在上边界和下边界之间具有公平分布,以便看起来是随机的.
例如:
function (1, 1, 1) = 423
function (1, 1, 2) = 716
function (1, 2, 1) = 112
Run Code Online (Sandbox Code Playgroud)
这些必须合理地快速生成,我的意思是我应该能够在网页加载期间生成100-200而没有明显的延迟.
该方法必须可以在C#中执行,但也可以在JavaScript中执行,否则我可能会使用CRC32或MD5哈希算法.
如果有帮助,这将用作程序生成例程的一部分.
我以前曾经问过这个问题,但我认为我的解释质量很差让我失望.
如果措辞严厉,我道歉.如果是的话,请告诉我,我会尝试进一步解释.
非常感谢您的帮助.
我正在编写一个生成二进制(黑白)图像的程序.白色的ARGB(Alpha,红色,绿色,蓝色)是黑色(0,255,255,255)和(0,0,0,0)黑色.所以我使用Random数字来生成二进制位图
int a = rnd.Next(256);
int r = rnd.Next(256);
int g = rnd.Next(256);
int b = rnd.Next(256);
Run Code Online (Sandbox Code Playgroud)
但是使用这个数字范围会生成一个颜色图像,所以我只需要0或255的随机数,它们之间没有任何关系.记住它是二进制而不是灰度图像.