如何让我的Android应用生成随机数?

时间:2011-03-09 23:35:21

标签: java android eclipse image loops

我是Java新手并制作Android应用程序。如何根据用户输入的内容制作一个滚动大量骰子的Java程序?

我创建的Java程序只掷一个骰子。

如何让Java从1到6随机滚动?

如何让Java根据用户想要的次数制作随机数?

最后,如何让Java根据用户输入的数字绘制图像?

这是我的应用程序的样子。

Valid XHTML http://img852.imageshack.us/img852/4439/screenshotjavawarhammer.png

这是我的代码

package com.warhammerdicerrolleralpha;

import java.util.Random;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class myMain extends Activity 
{
    /** Called when the activity is first created. 
     * @return */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);



     final Random myRandom = new Random(6);



    Button buttonGenerate = (Button)findViewById(R.id.button1);
    final TextView textGenerateNumber = (TextView)findViewById(R.id.text4);




    buttonGenerate.setOnClickListener(new OnClickListener()
    {

           @Override
           public void onClick(View v) 
           {
            // TODO Auto-generated method stub
            textGenerateNumber.setText(String.valueOf(myRandom.nextInt()));
           }});

    }

}

我的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:padding="5dip" android:background="@drawable/warhammerdicerollalpha"
    android:layout_height="fill_parent">


    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="@string/hello" />
    <EditText android:layout_height="wrap_content"
        android:layout_width="match_parent" android:id="@+id/enternumberofdice"></EditText>
    <Button android:text="Button" android:id="@+id/button1"
        android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:id="@+id/generatenumber" />
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="LOL" android:id="@+id/text4"></TextView>

</LinearLayout>

2 个答案:

答案 0 :(得分:14)

Random.nextInt()怎么样?

用法:

final Random rand = new Random();
int diceRoll = rand.nextInt(6) + 1; // uniformly distributed int from 1 to 6

在更新图片方面,要显示6个不同的图片(大小相同),并使用switch在不同的myImageView.setImageResource(R.drawable.dice_n)之间进行选择。

答案 1 :(得分:1)

使用带有Random种子的long对象(System.currentTimeMillis()是一个很好的对象)。然后从对象中调用nextInt(int n)方法并传入模具大小。 (请记住,nextInt(int n)的范围从0开始,因此您需要传入模具大小,然后将1添加到生成的卷筒中。

long种子的原因是为了改善数字分布的(伪)随机性。

如果你还没有,你应该将模具尺寸声明为常数。随机here上的Javadoc。