重置随机生成器 Android
Posted
技术标签:
【中文标题】重置随机生成器 Android【英文标题】:Reset random generator Android 【发布时间】:2015-11-01 18:01:19 【问题描述】:我正在创建一个应用程序,在课堂上我有这个随机:
public class Ejemplo extends Activity implements OnClickListener
int ran=(int)(1*Math.random()) +1;
还有这个柜台
int contador= 0; // this is just to know how many time i won
然后我有 2 个按钮 a1 和 a2
在我的 onClick 中
switch (v.getId())
case R.id.a1:
if(ran == 1)
a1.setText("WIN");
contador= contador + 1;
else
a1.setText("0");
a1.setClickable(false);
break;
case R.id.a2:
if(ran == 2)
a2.setText("WIN");
contador= contador + 1;
else
a2.setText("0");
a2.setClickable(false);
break;
所以问题是当我按下按钮时:新游戏随机数将具有相同的随机数,我不能再次调用活动,因为我不想重置我的计数器:contador。
我怎样才能重置我的随机数,所以它不会总是选择同一个按钮?
【问题讨论】:
【参考方案1】:只需使用Random
而不是Math.random
它更容易使用,你可以这样:
Random random = new Random(); // random generator
// then inside your onClick this code
if(random.nextBoolean())
// win
else
// lose
https://developer.android.com/reference/java/util/Random.html
编辑:
这真的比你想做的简单得多:
public class Ejemplo extends Activity implements OnClickListener
Random random = new Random(); // random generator
// then inside the click listener:
@Override
public void onClick(View v)
switch (v.getId())
case R.id.a1:
if(random.nextBoolean())
a1.setText("WIN");
contador= contador + 1;
gano();
else
a1.setText("0");
a1.setClickable(false);
break;
【讨论】:
我会尝试 thx,但我必须把它放在代码的什么地方?我可以有 Random random = new Random();在哪里我有我的 int run=(int)(1*Math.random()) +1;以及 switch 中的 if? 是的。Random
替换 int
和 if-else
替换 switch
thx 但我不能,我在 github 上试试这个,如果你有机会看看,那就太好了:github.com/Aqwe123/Problem-with-reset-random-Android-
问题是按钮不只有2个(我放了两个是为了更快),所以我必须放一个排名。【参考方案2】:
将int ran=(int)(1*Math.random()) +1;
放在onClick
中,而不是将其声明为活动中的实例变量。因此,每次点击时,您的 ran
变量都会有不同的值。
【讨论】:
我不能那样做,因为游戏的理念是你有两个选择,其中一个是获胜的,如果我在那次交换中选择了那个,也许没有人会获胜。然后我也不能点击两次一个按钮,只有一个以上是关于重置随机生成器 Android的主要内容,如果未能解决你的问题,请参考以下文章