使用Math.random进行整数运算时会调用一个新数字

时间:2019-04-26 16:30:19

标签: java

现在,我的变量全部随机滚动,但是只有一次。我怎样才能使它们在调用int时滚动一个新数字?当前所有统计信息均相同。一切都只能滚动一次。

int throwD4 = (int)(Math.random()*4+1);
int throwD6 = (int)(Math.random()*6+1);
int throwD8 = (int)(Math.random()*8+1);
int throwD10 = (int)(Math.random()*10+1);
int throwD12 = (int)(Math.random()*12+1);
int throwD20 = (int)(Math.random()*20+1);
int throwD100 = (int)(Math.random()*100+1);

int stat = (int)(throwD6 + throwD6 + throwD6);

String description = "A big strong dude with a cool longsword.";
String name = "Gladiator";

// stats
int STR = stat;
int DEX = stat;
int CON = stat;
int INT = stat;
int WIS = stat;
int CHA = stat;'

1 个答案:

答案 0 :(得分:2)

是的,您一定会发现,如果您计算公式然后将其存储在变量中,则除非重新计算公式并将其再次存储在变量中,否则变量将保持其值。访问变量的值不会重新运行创建变量的公式。变量只是一个哑数,它不记得公式。除非您更改变量,否则变量不会更改,这一事实在程序的整个生命周期中非常方便。

考虑创建一个返回随机数的方法,每次您需要随机数时,请调用该方法:

public int throwDice(int howManySides){
  return (int)(Math.random()*(howManySides+1));
}

如果您想了解有关如何使用它的更多建议,请向您的问题中添加一些有关当前使用方式的上下文,例如throwD6

从本质上讲,每当您考虑编写throwD6时,都改写throwDice(6)。例如:

//rolling a 6 kills the character
if(throwDice(6) == 6)
  character.Kill();