一个范围内的随机数,但接近最后生成的数字

时间:2015-04-22 07:05:04

标签: c# random range

我有一些代码可以在一个范围内为我的整数生成随机数,但我也希望实现它,这样当它生成下一个数字时,它不能大于先前生成数字的任何一方。

因此,例如,如果我的rbp生成的值为140,则下一个将介于137和143之间。

我不确定如何实现这个目标?

timer1.Interval = 1000;
Random r = new Random();
int rbp = r.Next(89, 260);//BP
int rhr = r.Next(39, 131);//HR
int rrr = r.Next(8, 25);//RR
int ros = r.Next(90, 120);//OS
double rtemp = r.Next(34, 40);//Temp

1 个答案:

答案 0 :(得分:2)

假设您使用变量rbp

int rbp = r.Next(89,260);

下次生成rbp时,您可以将范围基于rbp的值:

rbp = r.Next(rbp - 3 < 89 ? 89 : rbp - 3, rbp + 3 > 260 ? 260 : rbp + 3);

在此,我确保范围永远不会低于89或高于260.

示例:

Random r = new Random();
int rbp = r.Next(89, 260);
Console.WriteLine(rbp);

for (int i = 0; i < 10; i++)
{
    rbp = r.Next(rbp - 3 < 89 ? 89 : rbp - 3, rbp + 3 > 260 ? 260 : rbp + 3);
    Console.WriteLine(rbp);
}

Console.ReadLine();