首页 > 解决方案 > 生成具有特定间隔的随机数

问题描述

我正在尝试生成 1 到 10 之间的 3 个数字。任何两个数字之间的差必须小于/等于 2。例如:2、6、9 可以,但 2、4、7 不行(因为 4 - 2 = 2)。

private int GetGoodNumber()
{
    int lastIndex = 0;
    int x = 3;
    int randomNumber = 0;
    for (int i = 0; i < 3; i++)
    {
        int interval = UnityEngine.Random.Range(2, 7);
        do
        {
            randomNumber = interval + (UnityEngine.Random.Range(0, 10));
        } while (randomNumber > 10 || x <= 2);
        x = (lastIndex > randomNumber) ? lastIndex - randomNumber : randomNumber - lastIndex;
        lastIndex = randomNumber;
        Debug.Log(randomNumber);
    }
    return randomNumber;
}

不幸的是,我的方法不起作用,有谁知道问题所在。

标签: c#unity3drandom

解决方案


鉴于此规则,没有太多组合。

firstNumber必须是12或。_34

基于此生成下一个 betweenfirstNumber + 37

和最后一个按同样的逻辑。

代码:

var random = new Random();
var first = random.Next(1, 4 + 1);
var second = random.Next(first + 3, 7 + 1);  
var third = random.Next(second + 3, 10 + 1);

推荐阅读