Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#生成带有趋势和最大和最小偏移量的随机数_C#_Random - Fatal编程技术网

c#生成带有趋势和最大和最小偏移量的随机数

c#生成带有趋势和最大和最小偏移量的随机数,c#,random,C#,Random,我有一个函数,它生成一个介于0和2.2之间的双倍数: Random random = new Random(); double value= random.NextDouble() * (2.2 - 0) + 0; 这非常有效,但我需要生成下一个增量不超过0.2(正或负)的数字,即下一个随机值在先前生成的值的0.2范围内 例如:如果第一个随机数为:1.3434434,则下一个随机数应在1.5434434和1.1434434之间。这些数字可能有上升趋势,也可能有下降趋势,但之前生成的数字与新生成

我有一个函数,它生成一个介于0和2.2之间的双倍数:

Random random = new Random();
double value= random.NextDouble() * (2.2 - 0) + 0;
这非常有效,但我需要生成下一个增量不超过0.2(正或负)的数字,即下一个随机值在先前生成的值的
0.2
范围内

例如:如果第一个随机数为:
1.3434434
,则下一个随机数应在
1.5434434
1.1434434
之间。这些数字可能有上升趋势,也可能有下降趋势,但之前生成的数字与新生成的数字之间的差值不能大于
0.2


有什么简单的方法可以实现这一点吗?

我编写了几个扩展方法来帮助完成这项任务
generateTrand
将生成无限个可枚举的数字,并且两个连续数字之间的差值永远不会大于
delta

公共静态类扩展
{
公共静态IEnumerable GeneratorEnd(此随机、双起点、双增量)
{
var last=开始;
while(true)
{
收益率最后;
last=随机。NextDouble(last-增量,last+增量);
}
}
public static double NextDouble(此随机、双从、双到)
=>random.NextDouble()*(to-from)+from;
}
这样使用:

var random=new random();
var start=random.NextDouble(0,2.2);
var numbers=random.generateTrand(start,0.2).Take(20.ToArray();

如您所见,这是一个无限的生成器,调用代码负责限制随机数的数量。在本例中,我通过使用
Take(20)

将生成限制为20项,只需生成一个介于-0.2和0.2之间的随机数,并与之前的值求和即可。