c# - 生成具有特定间隔的随机数
问题描述
我正在尝试生成 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;
}
不幸的是,我的方法不起作用,有谁知道问题所在。
解决方案
鉴于此规则,没有太多组合。
firstNumber
必须是1
、2
或。_3
4
基于此生成下一个 betweenfirstNumber + 3
和7
。
和最后一个按同样的逻辑。
代码:
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);
推荐阅读
- sequelize.js - 与 sequelize.where 重复的列名
- r - 从凌乱的时间数据中清理融化
- json - Jsonata 通过查看父元素过滤值
- javascript - 如何使用传单插件(没有 vue2 包装器)将 Vue-Leaflet 中的地图显示限制在特定边界
- kubernetes - 使用单个 HELM 模板的多个资源
- android - AsyncTask 仅在较新的 Android 上返回 null
- python - 如何动态创建线程来执行 Web 请求?
- c# - 在 C# 中,如何检查是否在两次之间?
- android - 在不旋转应用程序的情况下检测 Ionic 4 中的设备旋转/方向
- docker-compose - 无法用pycharm远程启动项目