您的位置:首页 > 移动开发 > Android开发

生成各种各样的随机数,android分享

2012-02-13 11:53 811 查看
写给跟我一样没有java基础的童鞋们。。。。。
完全没有java基础,泪目,学习完来分享一下

安卓上生成各种各样的随机数

r1是随机数生成器中不断用  random.nextInt(), 取值
r2是一般的0~100之间
r3是0~指定上限
r4是指定上下限:
r4=(int) Math.round(Math.random()*(rMax-rMin)+rMin);

然后d系列是因为以前玩DND的时候,需要很多色子(4~100),所以做了个这个,只要绑个按钮上去控制就可以直接用了,,,
不得不说,我很习惯这种 【d4=r2%4+1;】,
取模的做法,唯一记得高中学的东西了。。。。
昨天打算尝试小球重力模拟,结果发现物理全部还给老师了,再次泪目。。。。



代码很简单,新手向的分享。。。。

package sam.sucl;

import java.util.Random;

import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.Display;
import android.view.SurfaceHolder;
import android.view.SurfaceHolder.Callback;
import android.view.SurfaceView;
import android.view.Window;
import android.view.WindowManager;

public class Zahui extends Activity{
App app=null;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
Display display=getWindowManager().getDefaultDisplay();
app=new App(this, display.getWidth(), display.getHeight());
setContentView(app);
}

private class App extends SurfaceView implements Callback,Runnable {
private Context mContext=null;
private int mScreenWidth=0;
private int mScreenHeight=0;

private Canvas canvas=null;
private Paint paint=null;
private SurfaceHolder surfaceHolder=null;

private Thread mThread=null;
private boolean isRunning=false;

Random random=new Random();
private int r1=0;
private int r2=0;
private int r3=0;
private int r4=0;
private int rMin=0;
private int rMax=0;

private int d4=0;
private int d6=0;
private int d8=0;
private int d10=0;
private int d12=0;
private int d20=0;

public App(Context context, int width, int height) {
super(context);
mScreenWidth=width;
mScreenHeight=height;

mContext=context;
canvas=new Canvas();
paint=new Paint();
paint.setColor(Color.WHITE);

surfaceHolder=getHolder();
surfaceHolder.addCallback(this);

rMin=29;
rMax=66;
}

public void draw(){
r1=random.nextInt();
r2=(int) (Math.random()*100);
r3=(int)(Math.random()*rMin);
r4=(int) Math.round(Math.random()*(rMax-rMin)+rMin);

d4=r2%4+1;
d6=r2%6+1;
d8=r2%8+1;
d10=r2%10+1;
d12=r2%12+1;
d20=r2%20+1;

canvas.drawColor(Color.BLACK);

canvas.drawText("宽:"+mScreenWidth, 20, 20, paint);
canvas.drawText("高:"+mScreenHeight, 20, 40, paint);

canvas.drawText("随机数生成示范:", 20, 60, paint);
canvas.drawText("随机数r1:"+r1, 20, 80, paint);
canvas.drawText("随机数r2:"+r2, 20, 100, paint);

canvas.drawText("四面骰子:"+d4, 20, 120, paint);
canvas.drawText("六面骰子:"+d6, 20, 140, paint);
canvas.drawText("八面骰子:"+d8, 20, 160, paint);
canvas.drawText("十面骰子:"+d10, 20, 180, paint);
canvas.drawText("十二面骰子:"+d12, 20, 200, paint);
canvas.drawText("二十面骰子:"+d20, 20, 220, paint);

canvas.drawText("rMin:"+rMin+" , rMax:"+rMax, 20, 260, paint);
canvas.drawText("取0~ra之间的随机数的随机数:"+r3, 20, 280, paint);
canvas.drawText("取指定范围的随机数:"+rMin+"-"+rMax+"之间", 20, 300, paint);
canvas.drawText("随机数为:"+r4, 20, 320, paint);
}

public void run(){
while (isRunning) {
synchronized (surfaceHolder) {
canvas=surfaceHolder.lockCanvas();
draw();
surfaceHolder.unlockCanvasAndPost(canvas);
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

public void surfaceChanged(SurfaceHolder holder,int arg1,int arg2,int arg3){

}
public void surfaceCreated(SurfaceHolder surfaceHolder){
isRunning=true;
mThread=new Thread(this);
mThread.start();
}
public void surfaceDestroyed(SurfaceHolder surfaceHolder){
isRunning=false;
}
}
}

此前发在安卓巴士的,现在转过来,顺手试试CSDN的博客系统,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息