重置随机生成器 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 替换 intif-else 替换 switch thx 但我不能,我在 github 上试试这个,如果你有机会看看,那就太好了:github.com/Aqwe123/Problem-with-reset-random-Android- 问题是按钮不只有2个(我放了两个是为了更快),所以我必须放一个排名。【参考方案2】:

int ran=(int)(1*Math.random()) +1; 放在onClick 中,而不是将其声明为活动中的实例变量。因此,每次点击时,您的 ran 变量都会有不同的值。

【讨论】:

我不能那样做,因为游戏的理念是你有两个选择,其中一个是获胜的,如果我在那次交换中选择了那个,也许没有人会获胜。然后我也不能点击两次一个按钮,只有一个

以上是关于重置随机生成器 Android的主要内容,如果未能解决你的问题,请参考以下文章

适用于 iOS 和 Android 的随机数生成器

Android Room - 如何在每个应用程序运行时重置自动生成的表主键

生成带有颜色的随机按钮

android生成随机汉字

怎么用C语言生成随机数?

Android:随机生成算数四则运算简单demo(随机生成2~4组数字,进行加减乘除运算)