Java math.random не будет рандомизироваться внутри функции? - PullRequest
0 голосов
/ 13 ноября 2018

Я начинал как бизнес-аналитик, но мне нужно изучить Javascript для некоторых других задач в работе: / Я только начал использовать академию кода, поэтому мои знания Javascript все еще так ограничены.

В любом случае, я пытаюсь создать случайное число внутри функции, но кажется, что полученное число всегда одно и то же число / результат.

var randNum = Math.floor(Math.random()*3)
function getChoice ()
{
  if (randNum) = 0) {console.log("Choice 1")}
  else if (randNum = 1) {console.log("Choice 2")}
  else (console.log("Choice 3")}
}
getComputerChoice()
console.log(randNum)

Код, кажется, всегда идет к варианту 2. Однако, когда я // выбираю 2, он переходит к варианту 3. По какой-то причине он не может показать вариант 1. Я также пытался просто использовать переменную randNum для последняя строка console.log (randNum), чтобы проверить, действительно ли она рандомизирована. Да, но только если он не используется вместе с функцией

var randNum = Math.floor(Math.random()*3)
function getChoice ()
{
  var choiceRandNum = Math.floor(Math.random()*3)
  if (choiceRandNum) = 0) {console.log("Choice 1")}
  else if (choiceRandNum = 1) {console.log("Choice 2")}
  else (console.log("Choice 3")}
}
getChoice()
console.log(randNum)

Для приведенного выше кода я попытался создать другую переменную для функции (но, по сути, такую ​​же sa randNum). Теперь в последней строке могут отображаться разные числа (0,1,2), но функция все еще не рандомизирована. Любые правки, которые можно сделать? Пожалуйста, не используйте слишком сложные решения, так как я все еще не знаю много Java.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

В настоящее время в вашем коде несколько ошибок.Вот как можно исправить каждое из них программно, начиная с вашего исходного кода и заканчивая тем, что, я полагаю, вы хотите:

1: в вашем коде много синтаксических ошибок.Для начала, вот чистая версия, чтобы было легче увидеть, что происходит:

var randNum = Math.floor(Math.random() * 3)
function getChoice() {
if (randNum) = 0) {
  console.log("Choice 1")
}
else if (randNum = 1) {
  console.log("Choice 2")
}
else (console.log("Choice 3")
}
}
getComputerChoice()
console.log(randNum)

Затем вы можете удалить все лишние скобки и добавить другие скобки:

var randNum = Math.floor(Math.random() * 3)
function getChoice() {
    if (randNum = 0) {
        console.log("Choice 1")
    }
    else if (randNum = 1) {
        console.log("Choice 2")
    }
    else {
        console.log("Choice 3")
    }
}
getComputerChoice()
console.log(randNum)

НаконецВы можете добавить операторы эквивалентности == вместо операторов присваивания = в свои операторы if и добавить точки с запятой:

var randNum = Math.floor(Math.random() * 3);
function getChoice() {
    if (randNum == 0) {
        console.log("Choice 1");
    }
    else if (randNum == 1) {
        console.log("Choice 2");
    }
    else {
        console.log("Choice 3");
    }
}
getComputerChoice();
console.log(randNum);

2: Ваша функция названа по-другому по сравнению с тем, что вы вызываете.Переименуйте вашу функцию в getComputerChoice():

var randNum = Math.floor(Math.random() * 3);
function getComputerChoice() {
    if (randNum == 0) {
        console.log("Choice 1");
    }
    else if (randNum == 1) {
        console.log("Choice 2");
    }
    else {
        console.log("Choice 3");
    }
}
getComputerChoice();
console.log(randNum);

3: вы объявляете случайное число только один раз, поэтому оно никогда не изменится, независимо от того, сколько раз вы вызываете функцию.Чтобы исправить это, объявите randNum как 0 вне функции, затем измените ее в функции:

var randNum = 0;
function getComputerChoice() {
    randNum = Math.floor(Math.random() * 3);
    if (randNum == 0) {
        console.log("Choice 1");
    }
    else if (randNum == 1) {
        console.log("Choice 2");
    }
    else {
        console.log("Choice 3");
    }
}
getComputerChoice();
console.log(randNum);

И теперь ваш код будет работать.Вот рабочий фрагмент:

var randNum = 0;
function getComputerChoice() {
  randNum = Math.floor(Math.random() * 3);
  if (randNum == 0) {
    console.log("Choice 1");
  } else if (randNum == 1) {
    console.log("Choice 2");
  } else {
    console.log("Choice 3");
  }
  console.log(randNum);
}
<button onclick="getComputerChoice()">Random Number</button>

Примечание: предоставленный фрагмент кода размещает console.log(randNum) внутри функции, поэтому, если randNum == 1, вывод будет:

Choice 2
1
0 голосов
/ 13 ноября 2018

Вы объявляете переменную вне функции, поэтому независимо от того, как часто вы вызываете функцию, результат останется неизменным. У вас также есть некоторые синтаксические ошибки в вашем коде. Используйте === вместо = и удалите несколько скобок:

function getChoice () {
    var randNum = Math.floor(Math.random()*3);

    if (randNum === 0) {
        console.log("Choice 1");
    } else if (randNum === 1) {
        console.log("Choice 2");
    } else { 
        console.log("Choice 3");
    }
}

getChoice();

Это должно дать вам желаемый результат

...