C#随机isn';不产生随机结果

C#随机isn';不产生随机结果,c#,class,random,C#,Class,Random,我正在为班级做一个项目。这是我第一次用C#编写代码,遇到了一个问题。我需要随机生成一个数字(1,2,或3)的石头剪纸游戏,但程序不断输出3,而不是一个随机数。这是我的密码。关于为什么会发生这种情况,有什么建议吗 using System; class elevator{ public static void Main(string[] args){ string response; // Create an instance of the random

我正在为班级做一个项目。这是我第一次用C#编写代码,遇到了一个问题。我需要随机生成一个数字(1,2,或3)的石头剪纸游戏,但程序不断输出3,而不是一个随机数。这是我的密码。关于为什么会发生这种情况,有什么建议吗

using System;
class elevator{
    public static void Main(string[] args){
        string response;

        // Create an instance of the random class
        Random random = new Random();

        // Return a random non negative interger. Max is set to 4 as it is exclusive and will set the true max to 3.
        int compChoice = random.Next(1, 4); 


        Console.Write("Do you want to play Rock, Paper, Scissors? ");
        response = Console.ReadLine();
        response = response.ToUpper();


        while(response == "YES"){

            // If statements displaying auto generated play for first player.
            if(compChoice == 1){
                Console.WriteLine("First player <computer> Selection - Rock");
            }
            if(compChoice == 2){
                Console.WriteLine("First player <computer> Selection - Paper");
            }
            if(compChoice == 3){
                Console.WriteLine("First player <computer> Selection - Scissors");
            }

            // Allow user to make selection
            Console.Write("Second Player Selection - <Type 1,2, or 3. Rock = 1, Paper = 2, or Scissors = 3>: ");
                int secondPlayer = Convert.ToInt32(Console.ReadLine());

            // Determine Winner
            if (secondPlayer == 1 & compChoice == 1) {
                Console.WriteLine("You both chose rock!");
            }
            if (secondPlayer == 1 & compChoice == 2) {
                Console.WriteLine("Player two wins! Paper covers rock.");
            }
            if (secondPlayer == 1 & compChoice == 3) {
                Console.WriteLine("Player one wins! Rock smashes scissors.");
            }
            if (secondPlayer == 2 & compChoice == 1) {
                Console.WriteLine("Player one wins! Paper covers rock.");
            }
            if (secondPlayer == 2 & compChoice == 2) {
                Console.WriteLine("You both chose paper!");
            }
            if (secondPlayer == 2 & compChoice == 3) {
                Console.WriteLine("Player two wins! Scissors cut paper.");
            }           
            if (secondPlayer == 3 & compChoice == 1) {
                Console.WriteLine("Player two wins! Rock smashes scissors.");
            }
            if (secondPlayer == 3 & compChoice == 2) {
                Console.WriteLine("Player one wins! Scissors cut paper.");
            }
            if (secondPlayer == 3 & compChoice == 3) {
                Console.WriteLine("You both chose scissors!");
            }

            // Ask user if they want to play another round
            Console.Write("Do you want to play Rock, Paper, Scissors? ");
            response = Console.ReadLine();
            // Convert response to all caps
            response = response.ToUpper();

        }
    Console.WriteLine("Thanks for playing!");
    }
}
使用系统;
班机{
公共静态void Main(字符串[]args){
字符串响应;
//创建random类的实例
随机=新随机();
//返回一个随机非负整数。最大值设置为4,因为它是独占的,并且将真正的最大值设置为3。
int compChoice=random.Next(1,4);
控制台。写下(“你想玩石头、布、剪刀吗?”);
response=Console.ReadLine();
response=response.ToUpper();
而(响应=“是”){
//显示第一个播放器自动生成播放的If语句。
if(compChoice==1){
Console.WriteLine(“第一玩家选择-摇滚”);
}
if(compChoice==2){
Console.WriteLine(“第一玩家选择-纸张”);
}
if(compChoice==3){
控制台。WriteLine(“第一玩家选择-剪刀”);
}
//允许用户进行选择
控制台。写入(“第二个播放器选择-:”;
int secondPlayer=Convert.ToInt32(Console.ReadLine());
//决胜
if(secondPlayer==1&compChoice==1){
WriteLine(“你们都选择了摇滚!”);
}
if(secondPlayer==1和compChoice==2){
WriteLine(“玩家二胜!纸盖石头”);
}
if(secondPlayer==1和compChoice==3){
控制台.WriteLine(“玩家一赢!石头砸剪刀”);
}
if(secondPlayer==2&compChoice==1){
控制台.WriteLine(“玩家一赢!纸盖石头”);
}
if(secondPlayer==2&compChoice==2){
WriteLine(“你们都选择了纸张!”);
}
if(secondPlayer==2和compChoice==3){
控制台。WriteLine(“玩家二胜!剪刀剪纸”);
}           
if(secondPlayer==3&compChoice==1){
控制台。WriteLine(“玩家二胜!石头砸剪刀”);
}
if(secondPlayer==3和compChoice==2){
控制台。WriteLine(“玩家一赢!剪刀剪纸”);
}
if(secondPlayer==3&compChoice==3){
WriteLine(“你们都选择了剪刀!”);
}
//询问用户是否想玩另一轮
控制台。写下(“你想玩石头、布、剪刀吗?”);
response=Console.ReadLine();
//将响应转换为所有CAP
response=response.ToUpper();
}
Console.WriteLine(“谢谢玩!”);
}
}

您需要在循环中生成随机数:

while (response == "YES") {
    int compChoice = random.Next(1, 4); 
否则,它将生成一次数字,并一直使用该数字


请参见
random.Next
作为“random,我可以获取下一个随机数”,就像您使用
Console.ReadLine()
为第二个播放器所做的那样

您需要将随机数生成放在循环中:

while (response == "YES") {
    int compChoice = random.Next(1, 4); 
否则,它将生成一次数字,并一直使用该数字


请参见
random.Next
作为“random,我可以获取下一个随机数”,就像您使用
Console.ReadLine()所做的那样。对于第二个播放器

您需要将数字生成移动到循环中。而且,
Random
根据规范不是随机的;请读一下。尝试以不同的方式初始化它。在您的例子中,这样做是:
Random Random=new Random(DateTime.Now.millizes)随机()不是随机的;请读一下。明智的话,你应该跟随自己。
Random
生成伪随机数,而不是随机数。它使用统计学来计算一个“随机”数;因此,它不是随机的。当使用不同的数字播种时,它似乎是随机的。不管怎样,这与这个问题无关,只是一个旁注。根据@Alex的回答,与该问题相关的问题是代码问题。您需要将数字生成移动到您的循环中。而且,
Random
根据规范不是随机的;请读一下。尝试以不同的方式初始化它。在您的例子中,这样做是:
Random Random=new Random(DateTime.Now.millizes)随机()不是随机的;请读一下。明智的话,你应该跟随自己。
Random
生成伪随机数,而不是随机数。它使用统计学来计算一个“随机”数;因此,它不是随机的。当使用不同的数字播种时,它似乎是随机的。不管怎样,这与这个问题无关,只是一个旁注。根据@Alex的回答,与问题相关的问题是代码问题。