如何创建一个 5 的倍数的随机增量?

Aur*_*ler 3 c#

我使用创建randomTime两个 TimeSpans 之间的随机时间

Random random = new Random();
TimeSpan start = TimeSpan.FromHours(StundenS);
TimeSpan end = TimeSpan.FromHours(StundenE);
int maxMinutes = (int)((end - start).TotalMinutes);
int minutes = random.Next(maxMinutes);
TimeSpan randomTime = start.Add(TimeSpan.FromMinutes(minutes));
Run Code Online (Sandbox Code Playgroud)

如果StundenS=10StundenE= 11,结果可能是10:51,这是正确的。然而,我如何让它以 5 分钟的增量而不是 1 分钟的增量进行更改,因此10:51是禁止的,10:50不是10:55也不是?

编辑:我用

minutes = (int)(Math.Round((double)minutes / 5) * 5);
TimeSpan randomTime = start.Add(TimeSpan.FromMinutes(minutes));
Run Code Online (Sandbox Code Playgroud)

Bra*_*NET 5

减少你的范围并增加。

很容易在两个值(例如 0 和 10)之间获得一个随机整数。在这种情况下,可能有 10 个离散值。

现在我只能得到 10 个数字之一,我可以乘以得到正确的比例。所以要从 0 到 100 得到 10 的任何倍数,我可以写:

int rand = random.Next(0, 10);
int scaledRand = rand * 10;
Run Code Online (Sandbox Code Playgroud)

如果我想要 50 到 150 之间的值(仍然是 100 范围通知),您只需添加:

int finalRand = scaledRand + 50;
Run Code Online (Sandbox Code Playgroud)

同样,您的范围是 60,是 5 的倍数。除法要求 12 个离散值,因此代码:

int rand = random.Next(0, 12);
int scaledRand = rand * 5;
Run Code Online (Sandbox Code Playgroud)

给你你想要的倍数。