我要做的是检索随机的“x”和“y”值,将它们分配给我的每个陷阱。我已经学会了如何获取特定范围内的随机数,但我已经尝试了各种方法来检索第一个随机xvalue和yvalue来分配它们,但我收到了“System.Random”。
编辑:谢谢大家的答案和帮助,但我仍然不清楚如何获取随机值并分配它们。我想要做的是,如果我把3作为陷阱的数量,程序将给出6个值,3为x坐标,3为y,我无法弄清楚我是如何得到它们的。例如。 x的RNG值是(4,7,1),y值是(8,1,6)。我试图让它成为trap1将值(4,8)分配给它trap2(7,1)和trap3(1,6)。任何指导或提示都会有所帮助。 Console.WriteLine ("Please enter the number of traps.");
Random rndX = new Random ();
Random rndY = new Random ();
int traps;
traps = Convert.ToInt32 (Console.ReadLine ());
Console.WriteLine ("X coordinates for the traps", traps);
for (int X = 1; X <= traps; X++)
{
Console.Write ("{0}", rndX.Next (1, 11));
Console.WriteLine ();
}
Console.WriteLine ("Y coordinates for the traps");
for (int Y = 1; Y <= traps; Y++)
{
Console.Write ("{0}", rndY.Next (1, 11));
Console.WriteLine ();
}
我试图检索随机值
Console.WriteLine ("{0,0}",rndX, rndY);
谢谢你仔细研究:D
任何提示或指导如何我应该这样做将不胜感激
答案 0 :(得分:2)
你需要使用相同的随机数生成器,C#中的RNG是一个被破坏的算法,并且默认情况下还使用时间戳种子实现,因此很容易实现两者:
rndX.Next()
rndY.Next()
将返回相同的数字,因为它们的指令速度非常快,因此有效地创建了相同的时间戳。而是调用相同的RNG两次,并使用数组索引来选择一个值,如下所示:
var arrX= new int[] {1,2,3};
var arrY = new int[] { 6,7,8};
Console.WriteLine ("{0},{1}",arrX[rndX.Next(3)], arrY[rndX.Next(3))];
答案 1 :(得分:1)
这是错误的,它在随机类上调用ToString()方法,因此输出System.Random
Console.WriteLine ("{0,0}",rndX, rndY);
您需要使用{0}
,{1}
为第一个和第二个值正确索引值。
Console.WriteLine ("{0}, {1}",rndX.Next(1, 11), rndY.Next(1, 11));
答案 2 :(得分:0)
您必须像在代码的其他部分中那样调用Next()
方法。
最后一行代码隐式调用ToString()
类实例上的Random
,它输出类类型(在这种情况下为"System.Random"
)。
答案 3 :(得分:0)
试试这个
Console.WriteLine ("{0},{1}",rndX.Next(), rndY.Next());
答案 4 :(得分:0)
使用这些值后,除非您保存它们,否则它们将被处理掉。
Console.WriteLine ("Please enter the number of traps.");
Random rnd = new Random ();
int traps;
traps = Convert.ToInt32 (Console.ReadLine ());
Console.WriteLine ("X coordinates for the traps", traps);
for (int X = 1; X <= traps; X++)
{
int rx = rnd.Next (1, 11);
Console.Write ("{0}", rx);
Console.WriteLine ();
}
Console.WriteLine ("Y coordinates for the traps");
for (int Y = 1; Y <= traps; Y++)
{
int ry = rnd.Next (1, 11);
Console.Write ("{0}", ry);
Console.WriteLine ();
}
此外,您只需要一个随机对象。
因为您在循环中检索值,所以您应该查看单个值的类,并使用List来存储这些值的集合。
更新
以下是使用类和列表的示例:
public class Trap
{
public int X = 0;
public int Y = 0;
}
Console.WriteLine("Please enter the number of traps.");
Random rnd = new Random();
int amount;
List<Trap> traps = new List<Trap>();
amount = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Coordinates for {0} traps", amount);
for(int i = 0; i < amount; i++)
{
Trap temp = new Trap();
temp.X = rnd.Next(1, 11);
temp.Y = rnd.Next(1, 11);
Console.WriteLine("Coordinates for Trap {0} - {1},{2}", i + 1, temp.X, temp.Y);
traps.Add(temp);
}
每个陷阱坐标都在列表traps
中(例如,坐标1是traps[0]
)
答案 5 :(得分:0)
您是否尝试过此代码:
public string GetRandomNumber(Int32 digit)
{
if (digit < 0) digit *= -1;
if (digit == 0) digit = 1;
Random rn = new Random();
string r = "";
for (int i = 1; i <= digit; i++)
{
r += "9";
}
return rn.Next(Convert.ToInt32(r)).ToString();
}