C#中如何生成仅为1或3的随机整数(不包含2)?
生成仅包含1或3的随机数解决方案
嘿,我来帮你搞定这个问题!你当前的代码random.Next(1, 3)其实会生成1或2,因为Random.Next(min, max)是左闭右开的区间——它包含min但不包含max,这就是为什么得不到3的原因。
下面给你几种简单可靠的实现方式,都能均等概率生成1或3:
方法一:映射0/1到目标值
先生成0或1的基础随机数,再通过条件映射成你需要的1或3,逻辑直观易懂:
var random = new Random(); int baseValue = random.Next(2); // 生成0或1 int GetRandomTile = baseValue == 0 ? 1 : 3;
方法二:从预设列表中随机选取
如果以后可能需要扩展更多可选值(比如再加个5),这种方法会更灵活:
var random = new Random(); var validValues = new List<int> { 1, 3 }; int GetRandomTile = validValues[random.Next(validValues.Count)];
这样只要修改validValues列表,就能轻松调整可选的随机数范围。
方法三:直接生成目标奇数(可选)
如果你需要的是连续奇数,也可以用这种简洁的方式,不过只针对1和3的话,前两种更直观:
var random = new Random(); // 生成0/1后乘2加1,直接得到1/3 int GetRandomTile = random.Next(2) * 2 + 1;
内容的提问来源于stack exchange,提问作者Dulaj Udayanga
相关产品推荐
相关产品推荐

