C# 如何使该生成器创建完全随机的面?
我构建了这个小小的ASCII面生成器(有点),我希望它能根据可用的零件随机组合一个面,但目前它似乎只根据它最初绘制的整数来选择零件。因此,如果它最初调用2,它只是调用了所有不同部分的第二个选项 前C# 如何使该生成器创建完全随机的面?,c#,random,C#,Random,我构建了这个小小的ASCII面生成器(有点),我希望它能根据可用的零件随机组合一个面,但目前它似乎只根据它最初绘制的整数来选择零件。因此,如果它最初调用2,它只是调用了所有不同部分的第二个选项 前 { bool faceLoop=true; while(faceLoop==true) { 内特毛; Random randHair=新的Random(); setHair=randHair.Next(1,4); if(setHair==1) { Console.WriteLine(“{}{}{}}”
{
bool faceLoop=true;
while(faceLoop==true)
{
内特毛;
Random randHair=新的Random();
setHair=randHair.Next(1,4);
if(setHair==1)
{
Console.WriteLine(“{}{}{}}”);
Console.WriteLine(“{}{}{}}”);
Console.WriteLine(“{}{}{}}”);
Console.WriteLine(“{}”);
}
if(setHair==2)
{
WriteLine({{{{{{{{}}}});
WriteLine({{{{{{{{{}}}});
WriteLine({{{{{{{{}}}});
WriteLine({{{{{{{{{}}}});
}
if(setHair==3)
{
WriteLine(“,,,,,,,,,,,,,,,,,,,,,,,,”;
}
Console.WriteLine(“{{}”);
Console.WriteLine(“/|====| \\”;
眼睛;
Random randEyes=新的Random();
setEyes=randeeyes.Next(1,4);
if(setEyes==1)
{
Console.WriteLine(“\\\\\\(\\\\\\\\\\\)(\\\\\\\\\\\\\\\\\\\\\)(\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
}
if(setEyes==2)
{
Console.WriteLine(\\\\\;xXx xXx |/);
}
if(setEyes==3)
{
Console.WriteLine(“\\\{0}{0}}}/”;
}
内特毛鼻;
Random randNose=新的Random();
setNose=randNose.Next(1,4);
if(setNose==1)
{
Console.WriteLine(“\\\\\\(,)\\\/”;
}
if(setNose==2)
{
Console.WriteLine(“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
Console.WriteLine(“\\\\\\\\\\\\/”);
}
if(setNose==3)
{
Console.WriteLine(“\\\\>\”/”;
}
小胡子;
Random randStash=新的Random();
setmoustach=randStash.Next(1,4);
if(setmoustach==1)
{
Console.WriteLine(“{}”);
Console.WriteLine(“{///\”);
}
if(setmoustach==2)
{
Console.WriteLine(“{}”);
Console.WriteLine(“{…….}”);
}
if(setmoustach==3)
{
Console.WriteLine(“{}”);
Console.WriteLine(“{}”);
}
内特塞特茅斯;
Random randMouth=新的Random();
setMouth=randMouth.Next(1,4);
if(setMouth==1)
{
Console.WriteLine(“{0}”);
Console.WriteLine(“{X==^==X}”);
}
if(setMouth==2)
{
Console.WriteLine(“{}”);
Console.WriteLine(“{\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
}
如果(setMouth==3)
{
Console.WriteLine(“{%}”);
Console.WriteLine(“{%}”);
}
内特塞钦;
Random randChin=新的Random();
setChin=randChin.Next(1,4);
if(setChin==1)
{
Console.WriteLine(“{^^}”);
Console.WriteLine(“%#######################%”;
}
if(setChin==2)
{
Console.WriteLine(“{}”);
Console.WriteLine(“{uuuuuuuuuu124; uuu124; uuu124; uuu124; uuu124; uuu124; uu124; u124; uu124; u124; u124; uu124uu124uuu124uuu124uu124uu124uu124uuu124uu124uu124uuu;
}
if(setChin==3)
{
Console.WriteLine(“{}”);
Console.WriteLine(“\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;
}
Console.ReadLine();
}
}
我刚刚运行了下面的代码,这是上面所有的代码,但它没有打印脸部的那部分,而是打印生成的随机数。从我看到的情况来看,数字是随机生成的
bool faceLoop = true;
while (faceLoop == true)
{
int setHair;
Random randHair = new Random();
setHair = randHair.Next(1, 4);
Console.WriteLine("Set hair: " + setHair);
int setEyes;
Random randEyes = new Random();
setEyes = randEyes.Next(1, 4);
Console.WriteLine("Set eyes: " + setEyes);
int setNose;
Random randNose = new Random();
setNose = randNose.Next(1, 4);
Console.WriteLine("Set nose: " + setNose);
int setMoustache;
Random randStash = new Random();
setMoustache = randStash.Next(1, 4);
Console.WriteLine("Set moustache: " + setMoustache);
int setMouth;
Random randMouth = new Random();
setMouth = randMouth.Next(1, 4);
Console.WriteLine("Set mouth: " + setMouth);
int setChin;
Random randChin = new Random();
setChin = randChin.Next(1, 4);
Console.WriteLine("Set chin: " + setChin);
Console.ReadLine();
此代码的输出为:
发型:1
定睛:2
机头:3
留胡子:3
固定嘴:1
Set chin:3代码正在为每个部分创建一个新的
Random
。这很可能导致所有随机数都是相同的数字。使用一(1)Random
用于所有不同的部分。我不想不同意,但是,使用您发布的代码,我无法复制您显示的输出。在几乎所有情况下,在我的测试中,每个部分的数字都是相同的。正如所评论的,这是因为Random
是“新创建的”对于每个部分,Random
使用一个DateTime
作为初始种子,因此,当新创建的随机数快速连续创建(如此处所示)时,这些数字很可能是相同的。此外,创建“分离”也没有意义Random
对于每个部分,一(1)个变量将适用于所有部分。这非常有趣
bool faceLoop = true;
while (faceLoop == true)
{
int setHair;
Random randHair = new Random();
setHair = randHair.Next(1, 4);
Console.WriteLine("Set hair: " + setHair);
int setEyes;
Random randEyes = new Random();
setEyes = randEyes.Next(1, 4);
Console.WriteLine("Set eyes: " + setEyes);
int setNose;
Random randNose = new Random();
setNose = randNose.Next(1, 4);
Console.WriteLine("Set nose: " + setNose);
int setMoustache;
Random randStash = new Random();
setMoustache = randStash.Next(1, 4);
Console.WriteLine("Set moustache: " + setMoustache);
int setMouth;
Random randMouth = new Random();
setMouth = randMouth.Next(1, 4);
Console.WriteLine("Set mouth: " + setMouth);
int setChin;
Random randChin = new Random();
setChin = randChin.Next(1, 4);
Console.WriteLine("Set chin: " + setChin);
Console.ReadLine();