C# IRC Bot-轮盘赌命令
我正在尝试为我的机器人制作一个轮盘赌命令,这就是我目前得到的C# IRC Bot-轮盘赌命令,c#,arrays,indexoutofboundsexception,C#,Arrays,Indexoutofboundsexception,我正在尝试为我的机器人制作一个轮盘赌命令,这就是我目前得到的 if (!String.IsNullOrEmpty(e.Data.Message.Replace("!roulette", ""))) { string _u = e.Data.Nick; string _b = e.Data.Message.Replace("!roulette", ""); string[] _c = { "R", "B", "G", "Red", "Black", "Green",
if (!String.IsNullOrEmpty(e.Data.Message.Replace("!roulette", ""))) {
string _u = e.Data.Nick;
string _b = e.Data.Message.Replace("!roulette", "");
string[] _c = { "R", "B", "G", "Red", "Black", "Green",
"r", "b", "g", "redblack green" };
Random _r = new Random();
int rnum = _r.Next(0, 36); // 0-35
if (_b.Contains(rnum.ToString()) && _b.Contains(_c.ToString())) {
MessageHandler(conf.Nick, e.Data.Nick + " spins the wheel.. " + _b.ToString() + " " + (string)_c[rnum] + "! We have a winner!", 8);
} else {
MessageHandler(conf.Nick, e.Data.Nick + " spins the wheel.. " + rnum.ToString() + " " + (string)_c[rnum] + "! You lose!", 8);
}
}
我得到的索引超出了数组的边界
。错误,对于不那么复杂的东西来说,这很奇怪
我该如何解决这个问题,我会忽略数组而选择字典或列表吗?您正在使用索引
rnum
引用数组的元素:\u c[rnum]
rnum
变量可以具有范围0-35
中的任何整数值但是
\u c
数组只有10个元素
要解决此问题,请将rnum
变量限制在0-9
范围内:
int rnum = _r.Next(0, 10);
是的,很抱歉。我补充说。我只是有点累了,因为我整天都在想这个问题。Random\u r=new Random()
-你应该使用。另外,rnum=\u r.Next(0,36)
可能有偏差(您必须观察范围
函数,这就是您实际调用的函数)。你能建立范围,然后使用公平洗牌吗?值被洗牌后,将第一个元素作为选择。请参阅加密堆栈交换上的“保护洗牌算法”。哦!谢谢呃,对不起。这是漫长的一周。再次感谢!接受答案是最好的“谢谢”:通常我会接受,但它告诉我明天才能接受。